Char 和 Int 打印两个不同的值

A. *_*hin 5 c printf char

我的代码正在读取一个包含整数的文件: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 吗?我正在尝试将这些数字用作二维数组中计数器和位置的输入。

Sou*_*osh 0

你正在3以一个角色的身份来阅读。

在系统中,遵循ASCII编码'3',十进制值为51,所以当你打印读取的值时,会打印51

如果你想要字面值,你可以使用类似的东西

 printf("%d", c- '0');
Run Code Online (Sandbox Code Playgroud)

因为数字0to9在编码中必然具有严格递增的序列值。