c - 当满足 if 语句时程序停止循环

标签 c file if-statement while-loop

我无法让我的 if 语句实际打印任何内容,即使它应该是真的。

当我删除 if 语句时,程序将运行 while 循环,直到文本文件末尾,但是一旦满足 if 语句条件,它将停止。 (为了发布此内容,我将有问题的 if 语句注释掉了)

#include <stdio.h>
int *file_int, *file_int2, *inv1,*inv2, *inv3, *inv4, *num;
int counter = 0;

int main(){
    FILE * in_file;
    in_file = fopen("beerinput.txt", "r");
    while (!feof(in_file)){
        counter +=1;
        printf("LOOP #%d\n", counter);
        fscanf(in_file, "%d\n", &file_int);
        printf("file_int = %d\n", file_int);

        fscanf(in_file, "%d\n", &file_int2);
        printf("file_int2 = %d\n", file_int2);
      /*if (file_int == 1){
            inv1 += *file_int2;
            printf("%d", inv1);
        }
        else{
        continue;
        }
        */
}
}

if语句被注释掉时的输出:

LOOP #1
file_int = 100
file_int2 = 300
LOOP #2
file_int = 500
file_int2 = 900
LOOP #3
file_int = 1
file_int2 = 200
LOOP #4
file_int = 2
file_int2 = 200
LOOP #5
file_int = 3
file_int2 = -100
LOOP #6
file_int = 4
file_int2 = 200
LOOP #7
file_int = 4
file_int2 = -200
LOOP #8
file_int = 3
file_int2 = -100
LOOP #9
file_int = 2
file_int2 = -300
LOOP #10
file_int = 1
file_int2 = -99
LOOP #11
file_int = -1
file_int2 = -99

VS。 if语句未注释掉时的输出:

LOOP #1
file_int = 100
file_int2 = 300
LOOP #2
file_int = 500
file_int2 = 900
LOOP #3
file_int = 1
file_int2 = 200

最佳答案

我预计当您执行注释掉的行时,您的代码会崩溃。

file_int2 是一个整数。 *file_int2 是一个指向随机内存块的指针,当您尝试访问它时,您的程序可能会崩溃。显然,您的计算机很乐意让您访问小地址的内存,但不是小负地址。

同样,inv1 也从未被初始化过。我想你正在尝试写 int inv1 = 0;//初始化在顶部 inv1 += file_int2;//添加整数

关于c - 当满足 if 语句时程序停止循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57211010/

相关文章:

c:找到两个简单列表之间的连接(公共(public)节点)

c - 测量二级缓存吞吐量的解密作业

python - 我制作了这个算法来告诉你一个数字是否是质数,但我不明白为什么不同缩进级别上的 'if-else statement' 有效

C# SQL 查询返回什么不返回?

C : poll function limit

c++ - 为什么我没有得到 'overflow error' ?

java - File.delete() 不会删除文件

java - 使用 .jar 删除文件

c++ - 如何在C++中的目录中使用通配符匹配查找最后修改的文件

java - 多个 else/if 语句的目的?不是单个 if then else 语句