C - 检查给定参数是否为自然数

C - Check if given argument is natural number

我应该如何正确地检查给定参数是否是 C 中的自然数?当谈到 C 时,我是一个非常初学者......我已经通过 atoi(argv[1]) == 1 将那个参数与 1 和 2 进行了比较......,但是当我通过让我们说 1.2137 作为参数时,atoi将其削减为 1。 感谢您的帮助。

您可以使用 header stdlib.h 中的 long strtol(const char* nptr, char** endptr, int base) 来检查您的整个字符串是否可以转换为数字:

char* end;
strtol( argv[1], &end, 10 );
if( *end == '[=10=]' ){
    printf( "String is a natural number\n" );
} else {
    printf( "String is not a natural number\n" );
}

另一种方法是检查不是“+”、“-”或数字的字符

bool valid = true;
for( const char* it = argv[1]; *it; ++it ){
    if(!(( *it >= '0' && *it <= '9' ) || *it == '+' || *it == '-' )){
        valid = false;
    }
}
printf( "String is%s a natural number\n", valid ? "" : " not" );