C ascii 转换器 printf 额外整数

C ascii converter printf Extra integer

正在尝试创建一个简单的 C 字符到 ASCII 转换器

但每次 printf 后结果打印“10”。

有什么解决办法吗?

编译器:mingw64/gcc

来源:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main() {
    char argc;
    printf("Enter for ASCII: ");
    do {
        scanf("%c", &argc);
        printf("%d\n", argc);
    } while (argc != 'Z');
}

输出:

$ ./ascii.exe 
Enter for ASCII: A 
65
10
S
83
10
D
68
10
V
86
10
X
88
10
Z
90

scanf 格式字符串 "%c" 读取所有字符,包括白色 space 字符,例如与按下的 Enter 键对应的换行符 '\n'。要跳过白色 space 字符,您可以在格式字符串前加上 space like

    scanf( " %c", &argc);
           ^^^^^

C 标准 7.21.6.2 fscanf 函数

5 A directive composed of white-space character(s) is executed by reading input up to the first non-white-space character (which remains unread), or until no more characters can be read.

或者你也可以通过下面的方式在循环中忽略它

do {
    scanf("%c", &argc);
    if ( argc != '\n' ) printf("%d\n", argc);
} while (argc != 'Z');