【发布时间】:2023-03-30 23:47:01
【问题描述】:
我想知道是否可以检测是否没有 int/long 命令行参数,然后只打印出错误消息而不是总和为 0。在下面的代码中,如果输入的命令行参数是./sum abc,那么它会打印出abc not be an int 的错误消息,然后它也会打印出总和的0,这是我不想要的。
但是像./sum 1 3 abc 4 这样的命令仍然可以工作并打印出 sum 为 8 以及abc 的错误消息。
我唯一能想到的是,如果 sum 等于 0,则不要将其打印出来。但是如果数字之和为零呢?
int main(int argc, char *argv[])
{
long sum = 0;
if(argc > 1){
long i;
char *ptr;
char *endptr;
for(i = 1; argv[i] != NULL; ++i){
sum += strtol(argv[i], &endptr, 10);
if(*endptr != '\0'){
fprintf(stderr, "error: argument %s is not an int\n", argv[i]);
continue;
}
}
}else{
printf("no input received");
}
printf("%ld is sum\n", sum);
return 0;
}
电流输出
error: argument abc is not an int
0
期望的输出
error: argument abc is not an int
【问题讨论】:
标签: c command-line sum arguments