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函数逐个对数组元素赋值。
参考资料:
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等等,其他类型就需要自己努力了。
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);
}
而多维数组的实质是指向指针的指针,比如一个多维数组是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;
}
输出得到结果:
第一行
第二行
第三行