fgetc()无法读取浮点数

梅尔

我在使用fgetc()时遇到了一个大问题,我无法弄清楚...我试图解析一个文本文件,所有内容都可以编译,但是在执行时,我遇到了无限循环x或段错误(Code :: blocks),文本文件是这样的:{“ USD_EUR”:“ 0.8631364”,“ EUR_USD”:“ 1.3964719”}}更改了16个费率。我尝试将所有浮动金额都设为汇率[16] ...

void read(float change[4][4], char* myFile)
{

    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 != EOF);// 125 = }  
        change[0][1] = rate[5];
        change[0][2] = rate[0];
        change[0][3] = rate[15];
        change[1][0] = rate[6];
        change[1][1] = rate[14];
        change[1][2] = rate[7];
        change[1][3] = rate[10];
        change[2][0] = rate[8];
        change[2][1] = rate[2];
        change[2][2] = rate[12];
        change[2][3] = rate[4];
        change[3][0] = rate[3];
        change[3][1] = rate[13];
        change[3][2] = rate[11];
        change[3][3] = rate[9];
        fclose(file);
    }
    else
    {
        printf("Unable to read the file!\n");
    }
}

我也尝试使用EOF,但我只在数字前输入了字符,然后就退出了循环,例如:{“ USD_EUR”:“

蓝精灵

我建议您简单地使用fscanf

例如

FILE *file;
int i = 0, status;
float value;
float rate[16];

file = fopen(myFile, "r");
if(file == NULL){
    printf("Unable to read the file!\n");
    return ;
}
while((status=fscanf(file, "%f", &value))!=EOF){
    if(status==1){
        rate[i++] = value;
        if(i==16)//full
            break;
    } else {
        fgetc(file);//one character drop
    }
}
fclose(file);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章