142

我正在尝试在 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>”提示符下输入我的输入后,gcc 给了我以下错误:

Segmentation fault (core dumped)
4

1 回答 1

167

“分段错误”意味着您试图访问您无权访问的内存。

第一个问题是你的论点main。该main功能应该是int main(int argc, char *argv[]),并且您应该在访问之前检查它argc是否至少为 2 argv[1]

此外,由于您要传递 a floatto printf(顺便说一句,double在传递 to 时转换为 a printf),您应该使用%f格式说明符。%s格式说明符用于字符串( -'\0'终止的字符数组)。

于 2013-10-28T17:49:02.170 回答