double from;
double to;
double jump;
switch (argc){
case 2: to = atof(argv [1]); from =10; jump =1; break;
case 3: to = atof(argv [1]); from = atof(argv[2]); jump = 1; break;
case 4: to = atof(argv [1]); from = atof(argv[2]); jump =atof(argv [3]); break;
default: from=1; to = 10; jump =1;
}
if (from == 0.0){
char message []= "The parameter \"from\" is not a valid number";
Error(EX_USAGE,message);
}else if (to==0.0){
char message []= "The parameter \"to\" is not a valid number";
Error(EX_USAGE,message);
}else if (jump==0.0){
char message []= "The parameter \"jump\" is not a valid number";
Error(EX_USAGE,message);
}
方法Error是一种辅助方法,它使用代码错误和消息
退出程序所以当我得到一个不仅仅是数字的参数时,我需要的是程序退出。
答案 0 :(得分:0)
使用strtod
(包括<stdlib.h>
)
double strtod(const char *nptr, char **endptr);
来自man
如果endptr不是NULL,则指向最后一个字符后面的字符的指针 转换存储在endptr。
引用的位置
使用示例
char *endptr;
double d = strtod(argv[1], &endptr);
int ok = endptr == argv[1] + strlen(argv[1]);
如果endptr
指向\0
中的尾随argv[1]
,则表示整个字符串已转换。
ok
为1
,表示转换已在argv[1]
结束时完成。
if (ok) {
// use `d`, the converted number
}