我正在try 用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;
}

After I type in my input at the "shell> " prompt, gcc gives me the following error:

Segmentation fault (core dumped)
c

推荐答案

"分段错误"指您试图访问您无权访问的内存.

第一个问题是你们main的论点.main函数应为int main(int argc, char *argv[]),在访问argv[1]之前应判断argc是否至少为2.

此外,由于您要传入floatprintf(顺便说一下,传入printf时会转换为double),因此应该使用%f格式说明符.%s格式说明符用于字符串('\0'个终止字符数组).

C++相关问答推荐

如何在 C 中的结构数组中使用动态二维数组?

libcurl 放置数据流而不是文件

为什么我不能将动态函数指针传递给 atexit()?

将所有位从最低有效位翻转到最高有效最后 1 位值的最有效方法是什么?

为什么 memchr() 将 void 指针作为输入?

在数组中查找与数组均值相同的对

从两个 32 位定时器计数器读取 64 位定时器值时,正确的 ARM64(AArch64)数据内存屏障使用是什么?

如何正确解决 C 中的 memset() 函数 MISRA 错误?

为什么 gcc -march=znver1 限制 uint64_t 向量化?

char数组变量在退出函数后被销毁

如何编写结构变量的读取函数?

C中偶数数组的递归

union无法解码字节数组

假设指向同一个变量的两个指针是非法的/UB,为什么 C 编译器不能优化更改 const 指针的值?

我们可以在变量名中写注释吗?

项目中包含程序集文件时,来自 mmap 的意外 exec 权限

为什么不鼓励静态链接 glibc?

程序是 32 位还是 64 位意味着什么?

使用模数的 C 加法

为什么要在 C 和 C++ 项目中创建 include/ 目录?