#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char **argv) {
char * requiredi = argv[1];
int arg1 = atoi(requiredi);
if (arg1 < 0) {
fprintf(stderr, "Not positive integer\n");
}
if (isdigit(arg1) == 0) {
fprintf(stderr, "Not an integer\n");
}
return 0;
}
我希望我的参数不是一个正整数(0不是我程序的正整数)。我还想确保它只接受一个整数:如果看到类似45abc
的内容,它会显示错误。
答案 0 :(得分:1)
请注意,您应确保在传递argv[1]
之前将atoi()
传递给int
,并且isdigit()也不会告知数字是否为数字,strtol() 1}}始终为int
,isdigit()
允许您确定给定字符是数字字符的枯萎,即集合 [0-9] 的字符。< / p>
要检查您的字符串 - 传递的命令行参数 - 是否为数字,您应该使用{{3}}而不是atoi()
,这与atoi()
不同strtol()
您可以检查输入字符串是否是有效整数的表示,示例
int
main(int argc, char **argv)
{
int value;
char *endptr;
if (argc < 2) {
fprintf(stderr, "too few command line arguments\n");
return EXIT_FAILURE;
}
value = strtol(argv[1], &endptr, 10);
if (*endptr != '\0') {
fprintf(stderr, "invalid argument `%s' is not numeric\n", argv[1]);
return EXIT_FAILURE;
}
fprintf(stdout, "Ok, value converted: %d\n", value);
return EXIT_SUCCESS;
}