我需要读取字符串中的所有整数,数学运算符和字符

时间:2012-10-17 20:43:20

标签: c parsing char int atoi

我有一个字符串,可能包含0-9之间的单个整数或数学运算符(+, -, *, /)

基本上,我需要阅读所有字符/数字。我正在检查角色是+, - ,*还是/。如果没有,那么我知道它是一个数字或无效的字符。我正在使用atoi将其转换为整数。在两种情况下,atoi都将返回0:如果整数为0,则它​​是无效字符。

我还能怎样做出这种区别?

3 个答案:

答案 0 :(得分:2)

在使用atoi

之前,使用标准的isdigit()函数检查每个字符

答案 1 :(得分:0)

使用strtol执行错误检测。

答案 2 :(得分:0)

int main (void)
{
    int i, j ;
    char num_string[] = "1 234 23 45" ;
    char tmp [2] = {'\0', '\0'} ;
    int length = strlen (num_string) ;
    int* values = (int*) malloc (sizeof (int) * length) ;
    for ( i = 0, j = 0; i < length; ++i)
    {
        if ( isdigit (num_string[i] ) )
        {
            tmp [0] = num_string [i] ;
            values [j++] = atoi (tmp) ;
        }
    }
    printf ("\nThe string: %s", num_string) ;
    printf ("\nThe integer array which results is: ") ;
    for ( i = 0; i < j; ++i)
        printf (" %d ", values[i]) ;
    return 0 ;
}

输入: 1 22 33 4 555

输出: 1 2 2 3 3 4 5 5 5