我应该如何正确地检查给定的参数是否是C中的****自然数?我是一个初学者,在C…我已经通过atoi(argv[1])== 1 ...将该参数与1和2进行了比较,但是当我将1.2137作为参数传递时,atoi将其削减为1。谢谢你的帮助
rjzwgtxy1#
你可以从头文件stdlib.h中使用long strtol(const char* nptr, char** endptr, int base)来检查整个字符串是否可以转换为数字:
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" );
1条答案
按热度按时间rjzwgtxy1#
你可以从头文件
stdlib.h
中使用long strtol(const char* nptr, char** endptr, int base)
来检查整个字符串是否可以转换为数字:另一种方法是检查不是'+'、'-'或数字的字符