###前提・実現したいこと
とあるファイルから線形リストを作成したいです。
プログラム自体は間違ってはいないと思うのですが、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/ツール等のバージョンなど)
読み込むファイルの内容に問題はなかったです
WindowsとMacでは同じファイルを使っているのですか?それともMacで作ったものでしょうか?
また読み込んだファイルの中身を提示していただけると、解決の糸口になります。特に文字数が気になります。
遅くなり、すいません。WIndowsで作ったものです
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_サウサンプトン
が中身です
字数的には問題なさそうですね。文字コードは何ですか?
回答1件
あなたの回答
tips
プレビュー