格式字符串为
尝试创建一个简单的C字符到ASCII转换器
但是结果打印出";10〃;在每次打印f之后。
有什么解决办法吗?
编译器:mingw64/gcc
来源:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
char argc;
printf("Enter for ASCII: ");
do {
scanf("%c", &argc);
printf("%dn", 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
"%c"
的scanf
读取包括空白字符在内的所有字符,例如与按下的Enter键对应的换行符'n'
。要跳过空白字符,您可以在格式字符串前面加上类似的空格
scanf( " %c", &argc);
^^^^^
C标准7.21.6.2 fscanf函数
5由空格字符组成的指令由读取输入直到第一个非空白字符(保留未读(,或者直到无法读取更多字符为止。
或者您可以通过以下方式在循环中忽略它
do {
scanf("%c", &argc);
if ( argc != 'n' ) printf("%dn", argc);
} while (argc != 'Z');