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以上であることを確認する必要があります。
また、printf
にfloat
を渡しているので(ちなみに、printf
に渡すときにdouble
に変換されます)、%f
形式指定子を使うべきです。%s形式指定子は文字列(
'0'`-終端文字配列)用です。