为什么 printf("%d", getchar()) 多打印 10
why printf("%d", getchar()) printing an extra 10
在程序中,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
您没有将 a
传递给 STDIN。因为您按了 a
和 Enter,所以您传递了 a
和一个换行符。假设一个ASCII-based编码(比如UTF-8),
- 字母
a
编码为0x61 = 97
- 换行编码为 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);
}
在程序中,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
您没有将 a
传递给 STDIN。因为您按了 a
和 Enter,所以您传递了 a
和一个换行符。假设一个ASCII-based编码(比如UTF-8),
- 字母
a
编码为0x61 = 97 - 换行编码为 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);
}