为什么 printf("%d", getchar()) 多打印 10

why printf("%d", getchar()) printing an extra 10

在程序中,printf("%d", getchar()) 正在打印额外的 10。

当我像 a 这样输入时,它打印 9710 而不是 97,其他人也一样

#include <stdio.h>

int main() {

    int c;
    while((c=getchar()) != EOF) {
        printf("%d", c);
    }
    printf("\n\tENDED\n\n");

    return 0;
}
me@Device-xx:~/Desktop/Test/Tmps$ gcc 118.c -o 118
me@Device-xx:~/Desktop/Test/Tmps$ ./118
a
9710s
11510x
12010

您没有将 a 传递给 STDIN。因为您按了 a 和 Enter,所以您传递了 a 和一个换行符。假设一个ASCII-based编码(比如UTF-8),

  1. 字母a编码为0x61 = 97
  2. 换行编码为 0x0A = 10

也许你想要

while (1) {
    int c = getchar();
    // Stop when a Line Feed or EOF is encountered.
    if (c == EOF || c == 0x0A) {
         break;
    }

    printf("%d", c);
}