这是一个超级基本问题......我正在重新学习C(已经超过5年未使用它)。我无法使用此代码。我试图将用户输入(ascii字符)扫描为整数,并显示输入字符的ascii代码。
#include <stdio.h>
int main(int argc, char *argv[]) {
int character;
printf("Welcome to ASCII:\n");
do {
scanf("%d",&character);
printf("ascii: %d\n",character);
} while(character != 999);
printf("Done.\n");
return 0;
}
每次输入只显示0 ...
答案 0 :(得分:4)
“我正在尝试将用户输入(ascii字符)扫描为整数,并显示输入字符”
的ascii代码你应该做的恰恰相反。您应该读取一个字符并将其显示为整数,即:
char c;
scanf("%c", &c); // <-- read character
printf("%d", c); // <-- display its integral value
输入:a
,输出:97
另请注意,对于循环的终止条件,while(character != 999)
不是非常幸运的选择。检查scanf
的返回值以确定字符读取是否成功可能更合理:
while (scanf("%c", &character)) {
printf("ascii: %d\n", character);
}
答案 1 :(得分:1)
试试这个:
#include <stdio.h>
int main(int argc, char *argv[]) {
char character;
printf("Welcome to ASCII:\n");
do {
scanf("%c",&character);
getchar(); // to get rid of enter after input
printf("ascii: %d\n",character);
} while(character != 999);
printf("Done.\n");
return 0;
}
<强>输出:强>
d
ascii: 100
s
ascii: 115
答案 2 :(得分:0)
您正在尝试读取一个整数(scanf(“%d”,&amp; ...)),这是正常的操作失败,值为0 - int变量的默认值。将“%d”更改为“%c”,它应该可以正常工作。
答案 3 :(得分:0)
更改为:
printf("ascii: %c\n",character);
但是,您的条件是什么999
?