【问题标题】:Printing numbers in C在 C 中打印数字
【发布时间】:2020-03-19 21:27:29
【问题描述】:

所以我的问题是我想打印来自终端的数字,而这些数字与 EOF 不同。

例如,如果输入 007,我希望输出为 7,或者如果我输入 42,我希望输出为 42。

但由于某种原因,我得到的输出是一个随机数,我无法理解。

程序:

#include <stdio.h>

void ex04();

int main() {
    ex04();

return 0;
}

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

Input: 007

my Output:

           48
           48
           55
           10

Correct Output: 7

任何帮助将不胜感激。

【问题讨论】:

  • 提示:'0' == 48、'7' == 55 和 '\n' == 10。你熟悉ASCII吗?
  • 布莱恩猜对了。你得到单个字符。您想要的是将它们打印为 chars 而 not 十进制/ASCII 码值。因此,请使用 printf("%c\n",c); 或者,您可以 [出于理解/调试目的] 执行以下操作:printf("%2.2X %c\n",c,c); 这将打印 ASCII 十六进制值以及字符本身。

标签: c printing char numbers getchar


【解决方案1】:

getchar 设计用于输入单个字符,包括空格字符,例如代码为 10 的换行符 '\n'。

因此,如果您输入例如数字 42,那么第一次调用 getchar 将返回字符“4”,其 ASCII 码为 52,第二次调用 - 字符“2”,其 ASCII 码为 50。

以函数scanf为例

for ( int c; scanf( "%d", &c ) == 1; ) {
    printf("%d\n",c);
}

注意你的问题有错别字

my Output:

           48
           48
           58
           10

Correct Output: 7

字符 '7' 的 ASCII 码是 55 而不是 58。:)

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 2012-01-03
    • 2014-12-21
    • 2015-12-13
    相关资源
    最近更新 更多