如果满足语句,程序将停止循环

时间:2019-07-25 22:42:37

标签: 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

1 个答案:

答案 0 :(得分:-1)

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

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

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