我有一个字符串,其中可能包含单个整数0-9
或数学运算符(+, -, *, /)
。
基本上,我需要阅读所有字符/数字。我正在检查字符是 +、-、* 还是 /。如果不是,那么我知道它是数字或无效字符。我正在使用 atoi 将其转换为整数。atoi 在两种情况下都将返回 0:如果整数是 0 或如果它是无效字符。
我还能如何做出这种区分?
在使用 atoi 之前使用标准 isdigit() 函数检查每个字符
用于strtol
执行错误检测。
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