【发布时间】:2023-03-13 14:05:01
【问题描述】:
我在使用 fgetc() 时遇到了一个大问题,我无法弄清楚...我尝试解析一个文本文件,一切都编译但在执行时我得到了一个无限循环 xor 一个段错误(代码::块),我的文本文件是这样的: {"USD_EUR": "0.8631364", "EUR_USD": "1.3964719"} 有 16 种利率变化。我试着把我所有的浮动都放在 rate[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”:“
【问题讨论】:
-
你对C字符串了解多少?你不能只是
str = ""。 -
你想打电话给
strcat(char *, int)吗? -
在'change'中,位置变化[0][0]被跳过。
-
行:while(value > 48 && value
-
while (value > 48 && value < 57)将跳过小数分隔符。