0

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

4 回答 4

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);
}
于 2013-10-08T23:48:00.660 回答
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
于 2013-10-08T23:50:00.397 回答
0

您正在尝试读取整数(scanf("%d", &...)) 并且此操作失败并且值为 0 是正常的 - int 变量的默认值。将“%d”更改为“%c”,它应该可以工作。

于 2013-10-08T23:50:41.210 回答
0

改成 :

printf("ascii: %c\n",character);

但是,你的具体情况是什么999

于 2013-10-08T23:52:24.730 回答