我正在尝试在linux中编写一个具有sqrt参数的C程序,这是代码:
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
int main(char *argv[]){
float k;
printf("this is consumer\n");
k=(float)sqrt(atoi(argv[1]));
printf("%s\n",k);
return 0;
}
在“shell&gt;”提示符下输入输入后,gcc给出了以下错误:
Segmentation fault (core dumped)
答案 0 :(得分:108)
“分段错误”表示您尝试访问无权访问的内存。
第一个问题是main
的论点。 main
函数应为int main(int argc, char *argv[])
,在访问argc
之前,您应检查argv[1]
是否至少为2。
此外,由于您传递了float
到printf
(顺便说一下,在转到double
时转换为printf
)应该使用%f
格式说明符。 %s
格式说明符用于字符串('\0'
- 终止的字符数组)。