【问题标题】:Checking if the user entered an int - C检查用户是否输入了 int - C
【发布时间】:2012-08-17 00:57:07
【问题描述】:

我需要检查用户是否在 scanf() (在 C 中)中输入了一个整数。我有这个代码:

do {
    srs = scanf("%d", &x);
} while (!srs);

如果我输入一个数字,它会工作并继续程序,但如果我输入一个字符,它只会要求我再次输入。不过,如果我输入一个正确的整数,它不会打破循环。

【问题讨论】:

  • scanf 返回分配的变量数,这就是循环继续的原因。

标签: c loops input while-loop scanf


【解决方案1】:

如果您不先输入号码,它会将非数字字符留在输入流中,以供下一个呼叫接听。所以你进入了一个无限循环。

您应该使用fgets 读取整行输入,然后在该输入行上使用sscanf

do {
    char line[512];
    fgets(line,512,stdin);
    srs = sscanf(line,"%d", &x);
} while (!srs);

【讨论】:

  • sscanf 从字符串 [你用 fgets 填充的行] 中读取数字,而不是直接从键盘中读取。
猜你喜欢
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 2018-05-08
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 2017-07-19
相关资源
最近更新 更多