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');
正在尝试创建一个简单的 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');