我在使用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] 删除。
我来说两句