我正在尝试用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>“提示符下键入输入内容后,gcc给出以下错误:
Segmentation fault (core dumped)
发布于 2013-10-29 01:49:02
“分段错误”意味着您试图访问您无权访问的内存。
第一个问题是关于main
的参数。main
函数应为int main(int argc, char *argv[])
,访问argv[1]
前应检查argc
是否至少为2。
此外,由于要将float
传递给printf
(顺便说一句,它在传递给printf
时会转换为double
),因此应该使用%f
格式说明符。%s
格式说明符用于字符串('\0'
-terminated字符数组)。
https://stackoverflow.com/questions/19641597
复制相似问题