我无法获得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
答案 0 :(得分:-1)
我希望当您执行注释掉的行时,您的代码会崩溃。
file_int2是一个整数。 * file_int2是指向随机内存的指针,尝试访问它时可能会崩溃程序。显然,您的计算机很乐意让您以较小的地址访问内存,但不能以较小的负地址访问内存。
同样,inv1从未被初始化。我想你想写 int inv1 = 0; //顶部的初始化 inv1 + = file_int2; //添加整数