C - 扫描字符并显示ASCII码

时间:2013-10-08 23:46:44

标签: c string char

这是一个超级基本问题......我正在重新学习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 ...

4 个答案:

答案 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