1. ホーム
  2. c

[解決済み] Segmentation fault (core dumped)とは何ですか?重複

2022-03-01 04:58:08

質問

私は、引数のsqrtを持つCプログラムをLinuxで書こうとしています。

#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)

解決方法は?

セグメンテーションフォールトとは、アクセス権がないメモリにアクセスしようとしたことを意味します。

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

また float から printf (に変換されます(ちなみに、この変換は double に渡すと printf ) を使用する必要があります。 %f の書式指定子で指定します。この %s フォーマット指定子は、文字列 ( '\0' -終端文字配列)。