我试图在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;
}
Run Code Online (Sandbox Code Playgroud)
在"shell>"提示符下输入输入后,gcc给出了以下错误:
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
Eri*_*inn 118
"分段错误"表示您尝试访问无权访问的内存.
第一个问题是你的论点main.该main功能应该是int main(int argc, char *argv[]),您应该argc在访问之前检查至少为2 argv[1].
此外,由于你传递一个float以printf(其中,顺便说一句,被转换成一个double路过的时候printf),你应该使用的%f格式说明.该%s格式说明为字符串('\0'封端的字符数组).