0

我有一个 C 程序,它提示输入一个 13 位整数(long long)。但是用户可能不小心输入了一些字符。如何通过忽略输入中的所有字符来避免崩溃或循环?

4

3 回答 3

4
  1. 输入一个字符串
  2. 检查字符串中的所有字符都是数字
    • 如果输入无效:抱怨并退出,或重新提示和goto 1,或任何对您的应用有意义的内容
  3. 将您的(已验证)字符串转换为整数值
于 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 回答