【发布时间】:2013-01-11 05:04:03
【问题描述】:
我遇到了这个问题...它可以编译,但是在运行时会立即出现段错误...使用 GDB,我确定它在尝试启动长双精度时会出现段错误。我觉得 atoi 可能是使用错误的函数,但我尝试了其他类似的函数,但仍然出现段错误。
int main(int argc, char *argv[]) {
long double x = atoi(argv[1]);
char oper = argv[2][0];
long double y = atoi(argv[3]);
【问题讨论】:
-
您应该在使用参数字符串之前检查您是否拥有
argc >= 4。您的分段错误很可能是因为您的参数列表没有您想象的那么长。如答案所述,atoi()用于将字符串转换为整数;strtold()适用于long double。
标签: c linux arguments command-line-arguments argument-passing