gpt4 book ai didi

c - 传递给函数时如何访问二维结构数组中的所有成员?

转载 作者:太空宇宙 更新时间:2023-11-04 05:33:19 25 4
gpt4 key购买 nike

#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 ).谁能帮忙打印除第一行以外的其他成员?

最佳答案

出现此问题是因为您在 print 函数中声明参数的方式:

void print(struct name v[][10],int row,int col)
^^^^^^

由于最里面的维度是10,在print()函数中,v会被当作一个二维数组,其中的个数列为 10,当您尝试打印它时,如果 col 的值不是 10,您将无法获得预期的输出。只需尝试将值 10 赋给 n 并检查程序的输出,您将获得预期的输出。

要解决此问题,请更改 print() 函数参数的顺序并将 10 替换为 col

void print(int row, int col, struct name v[][col])

这样称呼

print(m, n, v);

此外,\nscanf()格式字符串中不需要:

scanf("%s %lf\n",v[i][j].a,&v[i][j].s);
^^

删除它。

关于c - 传递给函数时如何访问二维结构数组中的所有成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51693815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com