使用while循环发出fgetc()c

mel*_*mel 0 c parsing loops file fgetc

我使用fgetc()遇到了一个大问题,我无法弄清楚...我试图解析一个文本文件,一切都编译但是在执行时我得到了一个无限循环或一个段错误(Code :: blocks),我的文本文件是这样的:{"USD_EUR":"0.8631364","EUR_USD":"1.3964719"},16个汇率变化.我试着把我所有的浮动费率[16] ...

FILE* file = NULL;
file = fopen(myFile, "r+");
int value,i;
float rate[16];
char* str = "";
if (file != NULL)
{
    do
    {
        value = fgetc(file);
        printf("%c \n",value);
        while(value > 48 && value < 57)
        {
            value = fgetc(file);
            strcat(str, value);
            //printf("%s \n", str);
        }
        rate[i] = atof(str);
        i++;
        str = "";
    }while(value != 125); // 125 = }
Run Code Online (Sandbox Code Playgroud)

Jit*_*ite 5

while(value =! EOF); 应该 while(value != EOF);

这是一个很大的不同.第一种情况是对变量值的赋值,第二种情况查看值是否等于EOF.

EOF是一个宏,通常有值-1,这意味着它!EOF变为0.因为你有一个do{} while()它将运行一次但不是更多因为条件是假的.