C语言中如何取二维数组的一行(一列)?

就像在Matlab中A(:,3)表示A矩阵的第三行一样,C语言中有没有类似的表示方法?

没有简单的函数或表示方法,只能使用循环输出或者使用数组中的值。

#include <stdio.h>

int main()

{

int a[3][3]={1,2,3,4,5,6,7,8,9};

int b[3],n=3;

printf("输出第三行:\n ");

for(int i=0;i<3;i++)

{b[i]=a[n-1][i];printf("%d ",b[i]);}

}

数组b中存储的就是第n行的数据。

扩展资料:

数组的使用规则:

1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。

3.如不给可初始化的数组赋初值,则全部元素均为0值。

4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

参考资料:

百度百科-数组

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-07

C语言中的数组实质是指针,比如一个数组是char c[32],那么你就可以将它看做是一个用malloc函数进行过分配内存的char *c,数组是指针的特殊形式。

而多维数组的实质是指向指针的指针,比如一个多维数组是char c[3][32],可以将它看做进行过分配内存的char **c。

知道了这点,就知道如何得到某一行了。

int main(int argc, const char * argv[])
{
    //声明一个二维数组
    char c [3][32];
    //分别输入三行数据
    sprintf(c[0], "第一行");
    sprintf(c[1], "第二行");
    sprintf(c[2], "第三行");
    //打印
    for (int a=0; a<=2; a++) {
        //用”c[a]“就可以表示第a行的字符串数组
        printf("%s\n",c[a]);
    }
    return 0;
}

输出得到结果:

第一行

第二行

第三行

追问

谢谢回答!能不能举个数字的例子,比如二维数组A={{1,2},{3,4}};如何把A的第一行给B,使得B={1,2}。谢谢!

追答

老老实实的用:

int A[2][2] = {{1,2},{3,4}};
int B[2];
for (int a=0; a<=1; a++) {
    B[a] = A[0][a];
}

来将A的第一行给B吧。或者试实际情况,自己写一个用来处理这种情况的函数。

因为字符数组用得是最多的,C语言提供了许多用于处理字符串的函数,比如strlen、strcpy、sprintf等等,其他类型就需要自己努力了。

追问

好吧,看来只能这样了。谢谢!

本回答被提问者采纳
第2个回答  推荐于2017-10-09

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);
}

第3个回答  2015-10-07
C语言中的数组实质是指针,比如一个数组是char c[32],那么你就可以将它看做是一个用malloc函数进行过分配内存的char *c,数组是指针的特殊形式。
而多维数组的实质是指向指针的指针,比如一个多维数组是char c[3][32],可以将它看做进行过分配内存的char **c。
知道了这点,就知道如何得到某一行了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

int main(int argc, const char * argv[])
{
//声明一个二维数组
char c [3][32];
//分别输入三行数据
sprintf(c[0], "第一行");
sprintf(c[1], "第二行");
sprintf(c[2], "第三行");
//打印
for (int a=0; a<=2; a++) {
//用”c[a]“就可以表示第a行的字符串数组
printf("%s\n",c[a]);
}
return 0;
}

输出得到结果:

第一行

第二行

第三行