[英]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.