我有一个 C 程序,它提示输入一个 13 位整数(long long)。但是用户可能不小心输入了一些字符。如何通过忽略输入中的所有字符来避免崩溃或循环?
问问题
122 次
3 回答
4
- 输入一个字符串
- 检查字符串中的所有字符都是数字
- 如果输入无效:抱怨并退出,或重新提示和
goto 1
,或任何对您的应用有意义的内容
- 如果输入无效:抱怨并退出,或重新提示和
- 将您的(已验证)字符串转换为整数值
于 2012-08-16T17:04:35.117 回答
1
在c中我会这样做:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char str[1000];
int i;
int newLength = 0;
long long l;
scanf( "%s", str );
for ( i = 0; str[i] != '\0'; ++i )
{
if ( isdigit( str[i] ) )
str[newLength++] = str[i];
}
str[newLength] = '\0';
sscanf( str, "%d", &l );
return 0;
}
于 2012-08-16T17:12:25.880 回答
0
您可以使用scanf:
成功时,该函数返回成功读取的项目数。如果发生匹配失败,此计数可以匹配预期的读数数量或更少,甚至为零。
于 2012-08-16T17:05:55.807 回答