【发布时间】:2019-01-12 14:21:04
【问题描述】:
#include<stdio.h>
#include<string.h>
struct name
{
char a[20];
double s;
};
void print(struct name v[][10],int row,int col)
{
int i,j;
for( i = 0; i < row; i++)
{
for(j = 0; j < col; j++){
printf("%lf\n ",v[i][j].s );
}
}
}
int main()
{
int m,n,i,j;
scanf("%d %d",&m,&n);
struct name v[m][n];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%s %lf\n",v[i][j].a,&v[i][j].s);
print(v,m,n);
return 0;
}
在上面的程序中,我想打印二维结构数组 (v) 中的所有成员,但我无法打印第一行以外的元素(剩余的行元素打印为 0)。
谁能帮助如何打印第一行以外的成员?
【问题讨论】:
-
为什么是“魔法”
10? -
大括号对我们来说是个好主意。同时检查
scanf的返回值 -
术语:你有一个 2D array 结构,而不是“2D 结构”。
-
为了便于阅读和理解:1) 一致地缩进代码。建议每个缩进级别为 4 个空格。 2) 遵循公理:每行只有一个语句,并且(最多)每条语句有 1 个变量声明。
-
关于:
scanf("%s %lf\n",v[i][j].a,&v[i][j].s);在调用任何scanf()系列函数时,始终检查返回值(而不是参数值)以确保操作成功。 2) 当使用输入格式说明符 '%s' 和/或 '[..]' 时,总是包含一个比输入缓冲区长度小 1 的 MAX CHARACTERS 修饰符,以避免任何可能的缓冲区溢出和由此产生的未定义行为
标签: c function multidimensional-array structure