繁体   English   中英

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()这样的函数将数字字符串转换为数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM