Segmentation fault(コアダンプ)とは何ですか?

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;
}
Segmentation fault (core dumped)
ソリューション

Segmentation fault"は、本来アクセスできないメモリにアクセスしようとしたことを意味します。

最初の問題は、mainの引数にあります。main関数は、int main(int argc, char *argv[])とすべきで、argv[1]にアクセスする前にargc`が2以上であることを確認する必要があります。

また、printffloatを渡しているので(ちなみに、printfに渡すときにdoubleに変換されます)、%f形式指定子を使うべきです。%s形式指定子は文字列('0'`-終端文字配列)用です。

解説 (3)