【问题标题】:why printf("%d", getchar()) printing an extra 10为什么 printf("%d", getchar()) 打印额外的 10
【发布时间】:2019-06-06 09:06:20
【问题描述】:

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

【问题讨论】:

  • 你按了哪些键,(注意复数)?
  • 10 - ASCII LF - 换行 - 换行。这不是“额外”的 10,而是您输入的内容。
  • 查找 UTF8 编码 10,这可能会给你一个线索。
  • 请以正确的方式标记您的代码。谢谢!
  • 十进制 97 是'a',十进制 10 是换行符。正是您输入的内容。

标签: c printf getchar


【解决方案1】:

您没有将 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);
}

【讨论】:

    猜你喜欢
    • 2015-08-15
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多