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

时间:2019-06-06 09:06:20

标签: c printf getchar

在程序中,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

1 个答案:

答案 0 :(得分:4)

您没有将a传递给STDIN。因为您按了a并按Enter,所以您传递了a和一个换行符。假设基于ASCII的编码(例如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);
}