我无法让我的 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/