繁体   English   中英

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

[英]Executing Error - Program stops working (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;   
}

另一个错字:

while (i=!0){

应该:

while (i != 0){

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

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

代码有几处错误:

  • 打开input.txt后,您没有检查错误
  • 虽然i =!0在语法上是正确的,但可能不满足您的要求!0为1,因此它与i = 1相同,您将值1放入了i

为了帮助您进行调试:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM