3

大家好,我刚刚完成了我的程序,该程序读取任何单个字符并打印该字符的 ASCII 值,但是当它循环时,它开始继续读取输入以及其他字符。

我的另一个问题是我希望我的程序在读取“#”时停止并将其打印为我似乎无法执行的无效代码如下所示:

#include <stdio.h>
int main() {
  char input;
  while (input != '#') {
    printf("\nEnter character: \n");
    scanf("%c*c", & input);
    printf("The ASCII value is: %d", (int) input);
    if (input == '#') break;
  }
  printf("\n# is invalid");
  return (0);
}
4

3 回答 3

3

你试图用

scanf("%c*c", & input);

但你忘记了%在压制中,

scanf("%c%*c", & input);

应该做你想做的。

于 2013-04-14T09:57:23.013 回答
0

您可以在第一个格式说明符之后添加一个空格。它会导致程序读取任何空格(包括 Enter)但不存储它。

scanf("%c ", & input);

这在下页中有清楚的解释。请参阅“参数”部分并​​转到标题为“空白字符”的段落。

http://www.cplusplus.com/reference/cstdio/scanf/

更正我的意思是,如果我们在以下情况下在两个格式说明符之间使用空格,那么它会“吃掉” Enter 或其他空格。我的错,在我的上述陈述中,它会继续要求更多的空格因为我们在所有格式说明符之后使用空格

scanf("%c %d", &input1,&input2);
于 2013-04-14T11:19:14.603 回答
0

fflush(stdin);scanf 后试试

于 2018-09-27T07:19:08.287 回答