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

bnl4lu3b  于 2023-06-05  发布在  其他
关注(0)|答案(1)|浏览(206)

我应该如何正确地检查给定的参数是否是C中的****自然数?我是一个初学者,在C…我已经通过atoi(argv[1])== 1 ...将该参数与1和2进行了比较,但是当我将1.2137作为参数传递时,atoi将其削减为1。谢谢你的帮助

rjzwgtxy

rjzwgtxy1#

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

char* end;
strtol( argv[1], &end, 10 );
if( *end == '\0' ){
    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" );

相关问题