2015-11-06 38 views
-1

我需要编写一个简单的程序来读取文件中的数字,然后将这些数字存储在一个数组中。文件中的最后一个数字是0,所以程序知道何时读取。执行错误 - 程序停止工作(C)

当我执行该程序时,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

什么是“DEC C++”的价值观?这是C,而不是C++。 – Arc676

+1

第一个'fscanf'在'i'之前缺少'&'。 – Barmar

+1

我很抱歉,“Dev C++”。这是我使用的程序的名称 –

回答

2

另一个错字:

while (i=!0){ 

应该是:

while (i != 0){ 

你的代码被分配到!0i,而不是用0比较i!01,所以你有一个无限循环,并且你写的超出了数组的范围。

另请注意,如果文件中有超过20个数字,您将在数组外写入。如果它少于20个数字,则打印values[k]的循环将读取未初始化的数组条目。

0

有一对夫妇的事情是错误的代码:

  • 您还没有打开input.txt中
  • 后检查错误,而I = 0语法正确,它可能不会做你想要的东西0 1,所以为i = 1,你是把价值1到我

为了帮助您进行调试是一样的:

  • 加的printf()语句代码来验证你达到了一定的线和检查变量
  • 学会使用调试器