回答編集履歴

1

修正

2023/06/01 04:47

投稿

episteme
episteme

スコア16614

test CHANGED
@@ -27,6 +27,21 @@
27
27
  x->Games = game;
28
28
  }
29
29
  return x;
30
+ }
31
+
32
+ SoccerRecord* make_record_from_csv(const char* line) {
33
+ const char* delim = ",\t\n";
34
+ char* buf = _strdup(line);
35
+ int ra = atoi(strtok(buf, delim));
36
+ char* na = strtok(NULL,delim);
37
+ char* te = strtok(NULL,delim);
38
+ int ag = atoi(strtok(NULL, delim));
39
+ char* co = strtok(NULL,delim);
40
+ int nu = atoi(strtok(NULL, delim));
41
+ int ga = atoi(strtok(NULL, delim));
42
+ SoccerRecord* result = make_record(ra,na,te,ag,co,nu,ga);
43
+ free(buf);
44
+ return result;
30
45
  }
31
46
 
32
47
  typedef struct __SoccerNode {
@@ -74,41 +89,48 @@
74
89
  list.head = NULL;
75
90
  list.tail = NULL;
76
91
 
77
- append(&list, make_record( 1, "ハーランド", "マンチェスターC", 22, "ノルウェー", 36, 33));
78
- append(&list, make_record( 2, "ケーン", "トットナム", 29, "イングランド", 27, 36));
79
- append(&list, make_record( 3, "トニー", "ブレントフォード", 27, "イングランド", 20, 33));
80
- append(&list, make_record( 4, "サラー", "リバプール", 30, "エジプト", 19, 36));
81
- append(&list, make_record( 5, "C・ウィルソン", "ニューカッスル", 31, "イングランド", 18, 29));
82
- append(&list, make_record( 6, "ラッシュフォード", "マンチェスターU", 25, "イングランド", 16, 33));
83
- append(&list, make_record( 7, "ウーデゴール", "アーセナル", 24, "ノルウェー", 15, 35));
84
- append(&list, make_record( 7, "マルティネリ", "アーセナル", 21, "ブラジル", 15, 36));
85
- append(&list, make_record( 9, "ワトキンス", "アストンビラ", 27, "イングランド", 14, 35));
86
- append(&list, make_record(10, "サカ", "アーセナル", 21, "イングランド", 13, 36));
87
- append(&list, make_record(11, "ロドリゴ", "リーズ", 32, "スペイン", 12, 29));
88
- append(&list, make_record(11, "バーンズ", "レスター", 25, "イングランド", 12, 32));
89
- append(&list, make_record(11, "ミトロビッチ", "フラム", 28, "セルビア", 12, 22));
90
- append(&list, make_record(14, "アルミロン", "ニューカッスル", 29, "パラグアイ", 11, 32));
91
- append(&list, make_record(15, "ガブリエル・ジェズス", "アーセナル", 26, "ブラジル", 10, 24));
92
- append(&list, make_record(15, "イサク", "ニューカッスル", 23, "スウェーデン", 10, 20));
93
- append(&list, make_record(15, "ソン・フンミン", "トットナム", 30, "韓国", 10, 34));
94
- append(&list, make_record(15, "フォーデン", "マンチェスターC", 22, "イングランド", 10, 29));
95
- append(&list, make_record(15, "マディソン", "レスター", 26, "イングランド", 10, 28));
96
- append(&list, make_record(15, "マック・アリスター", "ブライトン", 24, "アルゼンチン", 10, 32));
97
- append(&list, make_record(15, "エゼ", "クリスタルパレス", 24, "イングランド", 10, 36));
98
- append(&list, make_record(22, "フィルミノ", "リバプール", 31, "ブラジル", 9, 23));
99
- append(&list, make_record(22, "ヌニェス", "リバプール", 23, "ウルグアイ", 9, 29));
100
- append(&list, make_record(24, "トロサール", "アーセナル", 28, "ベルギー", 8, 34));
101
- append(&list, make_record(24, "アウォニイ", "ノッティンガム・フォレスト", 25, "ナイジェリア", 8, 25));
102
- append(&list, make_record(24, "ジョンソン", "ノッティンガム・フォレスト", 21, "ウェールズ", 8, 36));
103
- append(&list, make_record(24, "イングス", "ウエストハム", 30, "イングランド", 8, 33));
104
- append(&list, make_record(24, "アルバレス", "マンチェスターC", 23, "アルゼンチン", 8, 28));
105
- append(&list, make_record(24, "ギュンドアン", "マンチェスターC", 32, "ドイツ", 8, 30));
106
- append(&list, make_record(24, "ウォード・プラウズ", "サウサンプトン", 28, "イングランド", 8, 36));
107
- append(&list, make_record(24, "グロス", "ブライトン", 31, "ドイツ", 8, 34));
108
- append(&list, make_record(32, "三笘", "ブライトン", 25, "日本", 7, 30));
92
+ FILE* fp = fopen("data.csv","r");
109
-
93
+ char line[256];
94
+ while ( fgets(line, 256, fp) ) {
95
+ append(&list, make_record_from_csv(line));
96
+ }
97
+ fclose(fp);
110
98
  print(&list);
111
99
  return 0;
112
100
  }
113
101
  ```
114
-
102
+ data.csv
103
+ ```CSV
104
+ 1, ハーランド, マンチェスターC, 22, ノルウェー, 36, 33
105
+ 2, ケーン, トットナム, 29, イングランド, 27, 36
106
+ 3, トニー, ブレントフォード, 27, イングランド, 20, 33
107
+ 4, サラー, リバプール, 30, エジプト, 19, 36
108
+ 5, C・ウィルソン, ニューカッスル, 31, イングランド, 18, 29
109
+ 6, ラッシュフォード, マンチェスターU, 25, イングランド, 16, 33
110
+ 7, ウーデゴール, アーセナル, 24, ノルウェー, 15, 35
111
+ 7, マルティネリ, アーセナル, 21, ブラジル, 15, 36
112
+ 9, ワトキンス, アストンビラ, 27, イングランド, 14, 35
113
+ 10, サカ, アーセナル, 21, イングランド, 13, 36
114
+ 11, ロドリゴ, リーズ, 32, スペイン, 12, 29
115
+ 11, バーンズ, レスター, 25, イングランド, 12, 32
116
+ 11, ミトロビッチ, フラム, 28, セルビア, 12, 22
117
+ 14, アルミロン, ニューカッスル, 29, パラグアイ, 11, 32
118
+ 15, ガブリエル・ジェズス, アーセナル, 26, ブラジル, 10, 24
119
+ 15, イサク, ニューカッスル, 23, スウェーデン, 10, 20
120
+ 15, ソン・フンミン, トットナム, 30, 韓国, 10, 34
121
+ 15, フォーデン, マンチェスターC, 22, イングランド, 10, 29
122
+ 15, マディソン, レスター, 26, イングランド, 10, 28
123
+ 15, マック・アリスター, ブライトン, 24, アルゼンチン, 10, 32
124
+ 15, エゼ, クリスタルパレス, 24, イングランド, 10, 36
125
+ 22, フィルミノ, リバプール, 31, ブラジル, 9, 23
126
+ 22, ヌニェス, リバプール, 23, ウルグアイ, 9, 29
127
+ 24, トロサール, アーセナル, 28, ベルギー, 8, 34
128
+ 24, アウォニイ, ノッティンガム・フォレスト, 25, ナイジェリア, 8, 25
129
+ 24, ジョンソン, ノッティンガム・フォレスト, 21, ウェールズ, 8, 36
130
+ 24, イングス, ウエストハム, 30, イングランド, 8, 33
131
+ 24, アルバレス, マンチェスターC, 23, アルゼンチン, 8, 28
132
+ 24, ギュンドアン, マンチェスターC, 32, ドイツ, 8, 30
133
+ 24, ウォード・プラウズ, サウサンプトン, 28, イングランド, 8, 36
134
+ 24, グロス, ブライトン, 31, ドイツ, 8, 34
135
+ 32, 三笘, ブライトン, 25, 日本, 7, 30
136
+ ```