我的代码正在读取一个包含整数的文件:3 2 1 2 2 2 3
FILE *fptr;
fptr = fopen(argv[1], "r");
if (fptr == NULL)
{
printf("Cannot open file \n");
exit(0);
}
int c = fgetc(fptr);
printf("%c", c);
fclose(fptr);
Run Code Online (Sandbox Code Playgroud)
这是按预期输出第一个数字 3 但将其用作整数时
printf("%d", c);
Run Code Online (Sandbox Code Playgroud)
它输出 51 吗?我正在尝试将这些数字用作二维数组中计数器和位置的输入。
你正在3以一个角色的身份来阅读。
在系统中,遵循ASCII编码'3',十进制值为51,所以当你打印读取的值时,会打印51
如果你想要字面值,你可以使用类似的东西
printf("%d", c- '0');
Run Code Online (Sandbox Code Playgroud)
因为数字0to9在编码中必然具有严格递增的序列值。