我有一个程序,它从用户那里接受一个整数并将此数字用于加法运算。
我使用的代码如下所示:
```html
如何验证输入,使得如果用户输入了一个带有小数点的字母或数字,则在屏幕上显示错误消息?
我使用的代码如下所示:
```html
我有一个程序,它从用户那里接受一个整数并将此数字用于加法运算。
我使用的代码如下所示:
```scanf("%d", &num);
如何验证输入,使得如果用户输入了一个带有小数点的字母或数字,则在屏幕上显示错误消息?
我有一个程序,它从用户那里接受一个整数并将此数字用于加法运算。
我使用的代码如下所示:
```scanf("%d", &num);
scanf
的返回值。从 man scanf
中可以看到:
返回值
这些函数返回成功匹配和赋值的输入项数,可能少于提供的数量,甚至在早期匹配失败的情况下为零。
所以代码可能如下所示:
if (scanf("%d", &num) != 1)
{
/* Display error message. */
}
strtol
等方法。这可能会更加复杂。scanf
和%s
转换说明符或使用fgets
读取输入文本,然后使用strtol
库函数进行转换:#define MAX_DIGITS 20 // maximum number of decimal digits in a 64-bit integer
int val;
int okay = 0;
do
{
char input[MAX_DIGITS+2]; // +1 for sign, +1 for 0 terminator
printf("Gimme a number: ");
fflush(stdout);
if (fgets(input, sizeof input, stdin))
{
char *chk = NULL; // points to the first character *not* converted by strtol
val = (int) strtol(input, &chk, 10);
if (isspace(*chk) || *chk == 0)
{
// input was a valid integer string, we're done
okay = 1;
}
else
{
printf("\"%s\" is not a valid integer string, try again.\n", input);
}
}
} while (!okay);