【发布时间】:2020-03-11 05:59:19
【问题描述】:
#include<stdio.h>
struct info {
char album[30];
int released;
char group[30];
};
int main() {
FILE * fpt;
int size;
struct info band[size];
int i;
printf("How many groups would you like to input: ");
scanf("%d",&size);
for (i=0; i<size; i++) {
printf ("Input what group: ");
scanf(" %s", band[i].group);
printf("Input released date: ");
scanf(" %d", &band[i].released);
printf("Input what album: ");
scanf(" %s", band[i].album);
}
fpt = fopen("records.dat", "w");
// printf("Group\t\tReleased\t\tAlbum\n");
for (i=0; i<size; i++) {
fprintf(fpt,"%s\t\t%d\t\t%s\n", band[i].group, band[i].released,
band[i].album);
}
printf("File created.\n");
fclose(fpt);
}
这是output:
ø -605554032 entropy // 但下一行输出是正确的
【问题讨论】:
-
int size; struct info band[size];第二条语句导致未定义的行为,因为此时尚未初始化size变量。将其移动到scanf之后。 -
其他注意事项:始终检查函数调用的返回值。在这种情况下,检查
scanf和fopen结果非常重要。 -
@kaylum 请将其更改为答案。
标签: c struct file-handling garbage