我试图学习如何在函数之间传递结构,我编写了一个程序,其中有一个结构数组和结构本身有一个整数数组。它正在编译正确但是当我运行它时,程序不期望超过4个值。我不知道错误是什么?
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
char bname[10];
int ssn[3];
} book;
void accept(book k[], int n);
void print(book k[], int n);
int main()
{
book a[2];
accept(a, 2);
print(a, 2);
return 0;
}
void accept(book k[], int n)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < 3; i++)
{
scanf("%d\n", &k[i].ssn[j]);
}
scanf("%s\n", k->bname);
}
}
void print(book k[], int n)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d\n", k[i].ssn[j]);
}
printf("%s\n", k->bname);
}
}
答案 0 :(得分:2)
您的accept
功能:
for (j = 0; j < 3; i++) // infinite loop
应该 j ++。
接下来,在accept
和print
中将k->bname
更改为k[i].bname
,以便不会始终重写第一个对象。
正如@SouravGhosh在评论中已经指出的那样,为什么要使用scanf("%d\n"...
- 它可能只是scanf("%d"...
。