执行错误 - 程序停止工作(C)

时间:2015-11-06 02:22:39

标签: c

我需要编写一个简单的程序,从文件中读取数字,然后将这些数字存储在数组中。文件中的最后一个数字是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;   
}

2 个答案:

答案 0 :(得分:2)

另一个错字:

while (i=!0){

应该是:

while (i != 0){

您的代码将!0分配给i,而不是将i0进行比较。 !01,因此您有一个无限循环,并且您正在编写超出数组范围的内容。

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

答案 1 :(得分:0)

代码有几个问题:

  • 打开input.txt
  • 后,您没有检查错误
  • 虽然i =!0在语法上是正确的,但它可能不会做你想要的!0是1,所以它与i = 1相同,你将值1放入i

为了帮助您进行调试:

  • 将printf()语句添加到您的代码中以验证您是否到达某一行并检查变量的值
  • 学习使用调试器