C 编程:fgets() 函数没有读取我认为应该读取的值
C Programming: fgets() function is not reading the values that I think it should
我正在尝试打开并读取一个 .txt 文件,其中只包含一个从 00 到 99 的 2 位数字。
当前文件包含以下数字:05
当我用 fgets() 读取前两个值时,我得到的是 48 和 53,而且我注意到无论我在其中输入什么数字,fgets() 获取的数字都高 48。虽然我可以像现在这样从数字中减去 48,但我想弄清楚我做错了什么,这样我就不必这样做了。这是我的代码的相关部分:
char buff[3];
FILE *fp;
fp = fopen("savedata/save.txt","r");
fgets(buff, 3, fp);
SampleLevelIndex = (buff[0]-48)*10 + buff[1]-48;
fclose(fp);
您的文件包含字符“0”和“5”。请注意,“0”的 ASCII 码是 48。
您正在读取字节的值,而不是表示的数字。如果文件中有 'A',则字节 65.
您的方法适用于手动将数字字符转换为数字(尽管您可能需要进行一些额外的检查,但如果它不包含两个数字就会中断)。或者您可以使用 atoi()
之类的函数,将数字字符串转换为数字。
我正在尝试打开并读取一个 .txt 文件,其中只包含一个从 00 到 99 的 2 位数字。
当前文件包含以下数字:05
当我用 fgets() 读取前两个值时,我得到的是 48 和 53,而且我注意到无论我在其中输入什么数字,fgets() 获取的数字都高 48。虽然我可以像现在这样从数字中减去 48,但我想弄清楚我做错了什么,这样我就不必这样做了。这是我的代码的相关部分:
char buff[3];
FILE *fp;
fp = fopen("savedata/save.txt","r");
fgets(buff, 3, fp);
SampleLevelIndex = (buff[0]-48)*10 + buff[1]-48;
fclose(fp);
您的文件包含字符“0”和“5”。请注意,“0”的 ASCII 码是 48。
您正在读取字节的值,而不是表示的数字。如果文件中有 'A',则字节 65.
您的方法适用于手动将数字字符转换为数字(尽管您可能需要进行一些额外的检查,但如果它不包含两个数字就会中断)。或者您可以使用 atoi()
之类的函数,将数字字符串转换为数字。