c语言数组怎样单独取出某一列的数据?

比如b[3][5]={{1,1,1,1,1},{1,1,1,1,1},{2,2,2,2,2}},想去出所有列的数,然后每一列单独组成数组
我们老师讲的是
for(i=0;i<CN;i++)
ave_c[i]=ave_cou(score[0]+i);
。。到底啥意思啊
b[i]+j代表的是什么啊。。

b[i]是每一行的首地址,b[i]+j 是第i行第j列的地址,*(b[i]+j)才是b[i][j],你要取出每一列单独组成数组,可以这么做:
int row; //行
int col ; //列
for(col =0; col < CN; col++) //CN为总的列数
for(row = 0; row< RN; row++) //RN为总行数
{
ave_c[col] = b[row][col]; //这里列下标不变,改变行下标,就能取出每一列的所有数据,ave_c[col]用来存第col列,col从0开始
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-28

1、用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。
2、例程:

#include<stdio.h>
#include<string.h>
void main()
{
  char a[100],b[100],c[100];
  int i=3,j=4,k=0;    //第三行,第四列
  FILE *fp = fopen("data.txt","r");
  while(fgets(c,100,fp)){    //读入每行数据
    i--;
    if(i==0) strcpy(a,c);    //读到第三行数据
    b[k++]=c[j-1];        //把每行的那列字符拷到b中
  }
  b[k]=0;
  printf("第%d行数据:%s\n",i,a);
  printf("第%d列数据:%s\n",j,b);
  fclose(fp);
}

第2个回答  2013-11-18
b[i]是二维数组第i个数组元素的首地址,b[i]+j就相当于b[i][j],就是第i行第j列的元素。(i跟j都从0开始运算)。
相似回答