如何检查字符数组是否为有效整数 >= 1 在 c 中?

How to check if an array of characters is a valid integer >= 1 in c?

我不知道数组的大小,并且对每个 i < sizeof(array) 的元素使用 isdigit(array[i]) 似乎无法正常工作。

我正在努力:

检查每个字符是否都是数字。

将字符串转换为整数。

检查它是否 > 0

int all_digits(char *string){

    short i;
    for(i=0; i < sizeof(string); i++){

        if (!isdigit(string[i])){
            //Non-digit found.
            return 1;           
        }

    }
    //All of them are digits.
    return 0;
}

第一部分是我拿不到的

在您的代码中,string 的类型为 char *sizeof(string) 会给你 char * 的大小,而不是数组。

您需要显式传递数组的大小,使用另一个参数给 all_digits() 函数,并在 for 循环条件检查中使用该值。

也许是这样的

int all_digits(char *string, int size){

    short i;
    for(i=0; i < size; i++){

        if (!isdigit(string[i])){
            //Non-digit found.
            return 1;           
        }

    }
    //All of them are digits.
    return 0;
}

注意:特别是在 char * 的情况下,可以使用 strlen() [假设传递了适当的参数] 来实现更好、更小、更清晰的方法,这将为您提供长度提供的 string.

int n = strlen(string);
for(i=0; i < n; i++)

sizeof(pointer)sizeof(array)

不同

您需要传递一个有效的字符串,它是一个空终止字符串,否则 strlen() 可能会崩溃。

编辑:

或者你可以

for(i=0; string[i] != '[=11=]'; i++)

在这种情况下,您无法使用 sizeof 函数获得正确的长度。

sizeof 函数将为您提供给定数据类型的大小。您可以使用 strlen 函数。

在使用 strlen 时,您必须管理以下内容,

考虑一下你最后的字符串中没有空值你没有得到正确的字符串长度值。为此,您必须将该数组的大小作为另一个参数发送,或者您必须将空值放在字符串的最后一个值中。

那你就可以轻松搞定了。

简单地遍历字符串,测试每个字符:

int all_digits(char *string){
    if( *string == 0)              // empty string - wrong
         return 1;

    for( ; *string != 0; string++) // scan the string till its end (a zero byte (char)0)
        if (!isdigit(*string))     // test for a digit
            return 1;              // not a digit - return

    return 0;                      // all characters are digits
}

然而,这仅测试字符串是否由数字组成,并不能使您更接近于确定其数值...