c - C - 检查给定参数是否为自然数
问题描述
我应该如何正确检查给定参数是否是 C 中的 自然数?当谈到 C 时,我是一个非常初学者......我已经通过 atoi(argv[1]) == 1 将该参数与 1 和 2 进行了比较...,但是当我通过让我们说 1.2137 作为参数时, atoi将其削减为 1。感谢您的帮助。
解决方案
您可以使用long strtol(const char* nptr, char** endptr, int base)
from 标头来stdlib.h
检查您的整个字符串是否可以转换为数字:
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" );
推荐阅读
- python - 循环浏览文件夹中的文件,保持文件所在的顺序
- google-chrome-extension - 与运行在本地网络计算机上的 Web 扩展程序通信
- javascript - 在 OrgChart.js (balkangraph) 的 resultsPanel 中使用 costom 字段名
- python - ax[1] 图未显示
- javascript - 如何在nodejs中提取文件名?
- swift - SwiftUI & CloudKit - CoreData 多对多关系
- java - 如何使用 selenium java 单击未在 DOM 中加载的元素?
- macos - XAMPP 和 Docker 冲突(MySQL)
- docker - 可执行文件不在 docker 容器中 jupyter notebook 的路径中
- python - 两个文件之间的差异