什么是分段错误(核心转储)?
我正在尝试在linux下编写一个C程序,它有sqrt的参数,下面是代码:
#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>”提示符下input我的input后,gcc给了我下面的错误:
Segmentation fault (core dumped)
“分段错误”意味着您尝试访问您无权访问的内存。
第一个问题是你的main
论点。 main
函数应该是int main(int argc, char *argv[])
,并且在访问argv[1]
之前应该检查argc
是否至less为2。
另外,因为你将一个float
传递给printf
(顺便说一句,在传递给printf
时候将其转换为double
),你应该使用%f
格式说明符。 %s
格式说明符用于string( '\0'
终止字符数组)。