前提・実現したいこと
温度を入力し、平均値以上の温度の場合出力を行うというプログラムを作成しているのですがSegmentation fault (core dumped)と表示され動作しません。Segmentation faultとは何なのでしょうか
発生している問題・エラーメッセージ
Segmentation fault (core dumped)
該当のソースコード
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4 5#define LIMIT_LOW 0 6#define LIMIT_HIGH 25 7 8/* 構造体の定義 */ 9typedef struct tag { 10 int temp; /* 温度 */ 11 struct tag *next; /* 自分自身の型へのポインタ変数 */ 12} tempData; /* 温度データ */ 13 14 15/* 新データ作成関数 */ 16tempData* makeNewNode(int t) { 17 tempData* pNewNode; 18 /*** person 型のメモリ領域確保 ***/ 19 pNewNode = (tempData*)malloc(sizeof(tempData)); 20 if (pNewNode != NULL) { 21 /*** データ設定 ***/ 22 pNewNode->temp= t; 23 pNewNode->next = NULL; 24 } 25 return pNewNode ; 26} 27 28 29int main(void) { 30 int temp; /* 温度入力用変数 */ 31 tempData *pTop; /* 温度データリストのトップ */ 32 tempData *pNow; /* 温度データリスト内の現在位置 */ 33 tempData *pNew; /* 温度データの新規データ */ 34 /* 必要であれば,ここに変数を追加 */ 35 int i = 1; /*データ数の計測用*/ 36 int ave = temp; /* 平均値の計算用 */ 37 38 /* 最初のデータは,必ず範囲内のデータであるとする */ 39 printf("温度を入力\n"); 40 scanf("%d", &temp); 41 pTop = makeNewNode(temp); 42 pNow = pTop; 43 /* 次のデータを入力 */ 44 scanf("%d", &temp); 45 46 while ( (LIMIT_LOW <= temp) && (temp <= LIMIT_HIGH)) { 47 /* ここにリスト作成処理を記述 */ 48 pNew = makeNewNode(temp); 49 pNow->next = pNew; 50 pNow = pNew; 51 52 ave = ave + temp; 53 i = i + 1; /*データの数を計測*/ 54 55 /* 次のデータを入力 */ 56 scanf("%d", &temp); 57 } 58 59 60 /* ここに平均より大きいデータだけ表示する処理 */ 61 ave = ave / i ; /*平均値の導出*/ 62 63 64 tempData *pMae = NULL; /*温度データリスト内の現在位置の一つ前*/ 65 66 /*リストから平均値以下を削除*/ 67 pNow = pTop; 68 while(pNow != NULL){ 69 if(pNow->temp < ave){ 70 pMae->next = pNow->next; 71 72 73 }else{ 74 pMae = pNow; 75 } 76 pNow = pNow->next; 77 } 78 79 /*データ出力*/ 80 printf("--------\n"); 81 printf("実行結果\n"); 82 83 84 pNow = pTop; 85 while (pNow != NULL){ 86 printf("%d\n", pNow->temp); 87 pNow = pNow->next; 88 } 89 90 return 0 ; 91}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
AWS cloud9
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。