【发布时间】:2010-01-08 00:10:14
【问题描述】:
在大学时,有人问我我们的程序是否检测到从命令行参数输入的字符串是否是整数,而它没有检测到 (./Program 3.7)。现在我想知道如何检测到这一点。因此,例如 a 的输入是无效的,而 atoi 检测到,但是像 3.6 这样的输入应该是无效的,但 atoi 会将其转换为整数。
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc > 1) {
int number = atoi(argv[1]);
printf("okay\n");
}
}
但是只有当 argv[1] 真的是一个整数时才应该打印 offcourse OK。希望我的问题很清楚。非常感谢。
【问题讨论】:
-
这几乎是今天早些时候提出的问题的重复。答案是一样的:使用strtol。它设置了一个指针,指向它所转换的内容的结尾——如果它不是“\0”,那么那里有一些东西无法转换。
-
那是作业的微弱气味吗。
-
你会认为 '1e6' 是一个整数吗?或(消除想法)'1.234e6'?最好不要去那里。
-
@rob:哈哈,这是家庭作业,已经评分 (8)。我想因为没有测试这个我得到了扣分。我只是想知道最短/最干净的。 @jerry 那是哪个线程?
标签: c integer validation strtol