我需要编写一个简单的程序,从文件中读取数字,然后将这些数字存储在数组中。文件中的最后一个数字是0,因此程序知道何时读取。
当我执行程序时,Dec C ++崩溃了。我上网寻求解决方案并相应地更改了设置,但这并没有奏效。我运行了其他程序并且工作正常,这让我觉得代码有问题。
有什么想法吗?
#include <stdio.h>
int main(){
int i, j=0, k;
int values[20];
FILE*ptr;
ptr = fopen("input.txt", "r");
fscanf(ptr, "%d", &i);
while (i=!0){
values[j]=i;
j++;
fscanf(ptr, "%d", &i);
}
for (k=0; k<20; k++)
printf("%d\n", values[k]);
fclose (ptr);
return 0;
}
答案 0 :(得分:2)
另一个错字:
while (i=!0){
应该是:
while (i != 0){
您的代码将!0
分配给i
,而不是将i
与0
进行比较。 !0
是1
,因此您有一个无限循环,并且您正在编写超出数组范围的内容。
另请注意,如果文件中包含的数字超过20个,则您将在数组外部进行写入。如果它的数字少于20,则打印values[k]
的循环将读取未初始化的数组条目。
答案 1 :(得分:0)
代码有几个问题:
为了帮助您进行调试: