#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char** argv){
int xAmount = atoi(argv[1]);
int yAmount = atoi(argv[2]);
double coef[argc - 3];
int i = 0;
for(i=0; i < argc - 3; i++){
coef[i] = atof(argv[i+3]);
}
for(i=0; i < argc-3; i++){
if(i == 0){
printf("y = %.2f",coef[i]);
}
else {
printf(" + %.2fx^%d",coef[i],i);
}
}
return 0;
}
为什么这个C代码会返回分段错误?我查看了其他一些有同样问题的例子和问题,但我在这段代码中找不到类似的问题。我错过了什么?
答案 0 :(得分:2)
这种情况正在发生,因为您没有传入命令行参数,并且函数atoi(s)
在s
为空时返回段错误。
您应该调用函数./your_program_name arg1 arg2 arg3 ...
等
答案 1 :(得分:0)
我在这里看到的唯一可能导致段错误的是命令行参数数组:argv
。您正试图在代码的多个部分中访问此数组。
您是否将正确的命令数量和命令行参数类型传递给它?
确保将来不会发生这种情况的可能解决方案是在代码开头设置if
,检查argc
以确保参数的数量是否正确被传入。