質問編集履歴

1 質問の明確化

tssoccerboy

tssoccerboy score 8

2018/06/17 22:45  投稿

Segmentation fault: 11がどうして出るのか
### 前提・実現したいこと
現在、C言語プログラムを学習しているものです。
最初に数字を入力して、その入力した数字の数だけ数字入力を行い、格納した数字を逆から順番に出力するというプログラムを記述したく以下のようなプログラムを記述しました。
最初に数字を入力して、その入力した数字の数だけ数字入力を行い、格納した数字を出力するというコードを書きたく以下のようなプログラムを作成しました。
しかし、うまく実行ができません。原因はなぜか、またどのように修正する必要があるのか教えていただきたいです。よろしくお願いいたします。
### 発生している問題・エラーメッセージ
```
Segmentation fault: 11
```
### 該当のソースコード
```C
#include <stdio.h>
#include <stdlib.h>
int main(void){
 int *ip_line; //割り振られた領域のアドレスを格納するためのint型のポイント
 int **plist;   //ポインタへのポインタを宣言
 /* 確保する要素数の入力 */
 int linesnumber,lin;
 scanf("%d", &linesnumber);
 lin = linesnumber;
 //printf("%d %d\n",linesnumber,lin);
 //linesnumber-confirm-linep
 ip_line = (int **)malloc(sizeof(int *) * lin);/* lin個のint型ポインタのためのメモリー領域の確保 */
 int i;  //iはデータ入力した順番の数字,nは
 int n = 0;
 for (i = 0; i < lin; i++)
 {
   //printf(" Input number of elements for array #%d : ", i+1);  /* i番目のデータ配列の大きさnを指定 */
   scanf("%d", &n);
   /* n個のint型変数のためのメモリー領域を確保し、そのアドレスをポインタ配列plistのi番目の要素として格納 */
   plist[i]=(int *)malloc(n * sizeof(int));
 }
 for(i = n; i > 0;i--)
 {
   printf("%d\n",i);
 }
 return 0;
}
```
### 試したこと
### 補足情報(FW/ツールのバージョンなど)
  • C

    6693 questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る