0

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

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

我还能如何做出这种区分?

4

3 回答 3

2

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

于 2012-10-17T20:49:23.380 回答
0

用于strtol执行错误检测。

于 2012-10-17T20:46:21.723 回答
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

于 2012-10-23T06:13:40.277 回答