在C中保持字符不在整数输入中

时间:2012-08-16 17:02:33

标签: c

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

3 个答案:

答案 0 :(得分:4)

  1. 输入字符串
  2. 检查字符串中的所有字符是否为数字
    • 如果输入无效:抱怨并退出,或重新提示goto 1,或对您的应用有意义的任何内容
  3. 将您的(经过验证的)字符串转换为整数值

答案 1 :(得分: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;
}

答案 2 :(得分:0)

您可以使用scanf

  

成功时,该函数会成功返回项目数   读。此计数可以匹配预期的读数或更少,   如果匹配失败,则为偶数。