「セグメンテーション違反(コアダンプ)」とは何ですか?[重複] 質問する

「セグメンテーション違反(コアダンプ)」とは何ですか?[重複] 質問する

私は 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)

ベストアンサー1

「セグメンテーション違反」とは、アクセス権のないメモリにアクセスしようとしたことを意味します。

最初の問題は、 の引数にありますmain。関数は(または、同等に)mainである必要があり、にアクセスする前に少なくとも であることを確認する必要があります。int main(int argc, char *argv[])int main(int argc, char **argv)argc2argv[1]

floatまた、をに渡すのでprintf(ちなみに、doubleを に渡すとに変換されますprintf)、%f書式指定子を使用する必要があります。書式指定子は文字列 (で終わる文字配列)%s用です。'\0'

おすすめ記事