【发布时间】:2018-04-18 06:35:17
【问题描述】:
在下面的数组中,我存储了 11 个问题。我希望每个问题都被一一询问,然后将答案复制到 arrray ans1。目前,while 循环同时打印整个文件。有人可以阐明我如何使用 while 循环下方的 for 循环来完成此操作吗?
typedef struct{
char q[40][250];
char a[40][250];
} qa;
int main()
{
char *b [40][250];
int w, e, r, t, k, l;
char a1[40][250];
FILE *fp;
fp = fopen("quest.txt", "r");
while (fgets(b, sizeof(b), fp)) {
printf("%s", b);
scanf("%s",a1[1+]);
}
for(l>=0;l<=40;l++){
;}
【问题讨论】:
-
检查输入函数调用
scanf()的返回值。 -
一个好的编译器应该对你的代码发出警告甚至错误。
fgets函数需要一个指向 characters 数组的第一个元素的指针作为第一个参数,而不是指向 array 字符的指针。 -
另外,
e的初始值是多少?提示:你不知道,因为它是不确定的(而且看起来是随机的)。因此将其用作数组索引将导致undefined behavior,这使得任何关于行为的讨论或猜测都毫无用处。 -
最后,一个数组的有效索引范围是多少,例如
40元素?顶部索引是not40。如果您应该使用l作为任何数组的索引,这会使第二个循环中的循环条件错误。请注意,l的初始化不会初始化任何东西。或许你应该买几本入门书籍,从头开始?