我有一个指向char数组的指针我想增加它,直到它不指向数字/数字(在char数组中表示为char)。
例如,如果pointer指向此char数组中的'2'

['1'][' ']['2']['3']['4'][' '][' '][' ']['5']['6']['7']
            ^
         *pointer

我想增加它,直到它指向第一个非数字字符-' '
['1'][' ']['2']['3']['4'][' '][' '][' ']['5']['6']['7']
                           ^
                        *pointer

我知道我可以这样做:
while (*pointer == '0' || *pointer == '1' || *pointer == '2' || ...)
    pointer++;

return pointer;

但它很长,一点也不优雅。
我想我可以使用atoi(),当指针不指向数字时返回0
while (atoi(pointer) != 0 || *pointer == '0') //while it still points at a number
    pointer++; //increase the pointer until it will not point at a number

return pointer;

但似乎没用也许没关系,我在别的地方犯了个错误,但无论如何我想知道:
有没有其他(更好的)方法来检查指向字符数组的指针是否指向一个数字/数字,并将其增加到指向一个非数字字符,在C语言中?

最佳答案

您可能应该改用isdigit中的ctype.h类似于:

while (*pointer && isdigit(*pointer))
    pointer++;

关于c - 如何检查指向char数组的指针是否指向数字字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13659829/

10-13 04:48