質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.95%

Abort trap について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 5,116

score 14

前提・実現したいこと

とあるファイルから線形リストを作成したいです。
プログラム自体は間違ってはいないと思うのですが、Windows上では動き、MacではAbort trapが発生しました
なぜ、どこが違うのか
そもそもAbort trapとは何なのか教えて欲しいです!

発生している問題・エラーメッセージ

コンパイルは正常に行われ、実行するとabort trapが出てきました

Abort trap 6

該当のソースコード

#include <stdio.h>
#include <string.h>
#include <stdlib.h> 

struct member {
    int num;              
    char name[13];       
    char profile[45];     
    struct member *next;
};

typedef struct member list_mbr;
list_mbr *list(FILE *); 
void print_list(list_mbr *p);
//int get_data(void);

int main(int argc,char *argv[])
{
/* ファイルポインタと構造体へのポインタの定義 */
    struct member *listptr;
    FILE *fp;

/* ファイルのオープン */

    if ((fp=fopen(argv[1],"r"))==NULL) {
    fprintf(stderr,"%s がオープンできません\n",argv[1]);
    exit(1);

    }

/* リストの作成 */
    listptr = list(fp);


/* ファイルのクローズ */
    fclose(fp);

/* リストの表示 */

    print_list(listptr);

    return (0);
}

/* 以降 各関数の内容を記述すること */
void print_list( list_mbr *p){
    while(p != NULL){
        printf("%d %s %s\n", p->num, p->name, p->profile);
        p = p->next;
    }
//    printf("\n");
}

list_mbr *list(FILE *fp){
    struct member *p,*newp, a;

    p = NULL;
    while(fscanf( fp,"%d %s %s", &a.num, &a.name, &a.profile) != EOF){
        newp = (struct member *)malloc(sizeof(struct member));

        newp->num = a.num;
        strcpy(newp->name, a.name);
        strcpy(newp->profile, a.profile);
        newp->next = p;
        p = newp;
    }
    return p;
}

試したこと

windows上では成功したのですが...

補足情報(言語/FW/ツール等のバージョンなど)

読み込むファイルの内容に問題はなかったです

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • SatoshiKomatsu

    2017/07/19 23:47

    10 香川真司 FW_1989/03/17_172cm_63kg_マンチェスターU 17 長谷部誠 MF_1984/01/18_180cm_72kg_ニュルンベルク 5 長友佑都 DF_1986/09/12_170cm_68kg_インテル 13 大久保嘉人 FW_1982/06/09_170cm_73kg_川崎F 7 遠藤保仁 MF_1980/01/28_178cm_75kg_ガンバ大阪 9 岡崎慎司 FW_1986/04/16_174cm_76kg_マインツ 1 川島永嗣 GK_1983/03/20_185cm_82kg_スタンダール 4 本田圭佑 MF_1986/06/13_182cm_74kg_ACミラン 2 内田篤人 DF_1988/03/27_176cm_67kg_シャルケ 15 今野泰幸 DF_1983/01/25_178cm_73kg_ガンバ大阪 22 吉田麻也 DF_1988/08/24_189cm_81kg_サウサンプトン

    キャンセル

  • SatoshiKomatsu

    2017/07/19 23:48

    が中身です

    キャンセル

  • ttyp03

    2017/07/20 08:40

    字数的には問題なさそうですね。文字コードは何ですか?

    キャンセル

回答 1

checkベストアンサー

0

質問の回答をいただいていませんが、予想で回答しておきます。

おそらくWindowsとMacでそれぞれファイルを作って、それを読み込ませているものと思われます。
そしてそのファイルの中身は、nameは全角で6文字、もしくはprofileが全角で22文字のデータが存在しているのではないでしょうか。
そしておそらくWindowsで作ったファイルの文字コードはSJISで、MacのはUNICODE(種類は不明)なのではないでしょうか。
SJISは全角2バイトなので提示のコードにある領域で足りるのですが、UNICODEの場合、全角は2バイトとは限らず3バイトや4バイトなどが存在します。
つまり読み込むための領域が足りず、バッファオーバーランをした結果、アボートしているのではないかと推測しました。
解決するには、単純に十分な領域を確保するようにしてください。

そもそもAbort trapとは何なのか教えて欲しいです!

ちょうど過去の質問に回答されている方がいたので引用しておきます。
https://teratail.com/questions/46570

| たとえば「バッファ・オーバーラン」のようなプログラムの不正動作からシステムを保護するために、
| システムがそのプログラムを強制終了させた結果、発生しているエラーです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.95%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る