質問編集履歴

1

書式改善、質問文補足

2016/11/11 14:33

投稿

yusukee345
yusukee345

スコア31

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,9 @@
4
4
 
5
5
 
6
6
 
7
+ ```
8
+
7
- score.txtの内容
9
+ <score.txtの内容>
8
10
 
9
11
  James,1000
10
12
 
@@ -14,9 +16,11 @@
14
16
 
15
17
  Bob,900
16
18
 
19
+ ```
17
20
 
21
+ ```
18
22
 
19
- 実行結果
23
+ <実行結果>
20
24
 
21
25
  プレイヤー 得点
22
26
 
@@ -32,7 +36,11 @@
32
36
 
33
37
  --------------------
34
38
 
39
+ 最高得点:Steve(2800点)
40
+
35
- 最高得点:Steve(2800点) 」(問題文ここまで)
41
+ ``` 」(問題文ここまで)
42
+
43
+
36
44
 
37
45
 
38
46
 
@@ -40,7 +48,9 @@
40
48
 
41
49
 
42
50
 
51
+
52
+
43
- #include<stdio.h>
53
+ ```#include<stdio.h>
44
54
 
45
55
  #include<stdlib.h>
46
56
 
@@ -80,7 +90,7 @@
80
90
 
81
91
  printf("プレイヤー得点\n--------------\n");
82
92
 
83
- while (fgets(line, size, file) != NULL); {
93
+ while (fgets(line, size, file) != NULL){
84
94
 
85
95
  sscanf(line,"%[^,],%d,%[^\r\n,],%d,%[^\r\n,],%d,%[^\r\n,],%d",str1,&n1,str2,&n2,str3,&n3,str4,&n4);
86
96
 
@@ -140,8 +150,22 @@
140
150
 
141
151
  }
142
152
 
153
+ ```
154
+
143
155
 
144
156
 
145
157
  score.txtの内容が「James,1000,Tom,1200,Steve,2800,Bob,900」ならば望み通りの実行結果が得られましたが、問題文の通りのscore.txtの内容だと上手く行きません。
146
158
 
147
- fgets()は文字列読み込みの際に\nがあればそこで読み込みを止めるというのは知っているのですが、sscanf()でコンマを飛ばしつつ改行飛び越して4行の文字列と数字を読み込む方法が分かりません。どうか教えて下されば幸いです。
159
+ fgets()は文字列読み込みの際に\nがあればそこで読み込みを止めるというのは知っているのですが、sscanf()でコンマを飛ばしつつ改行飛び越して4行の文字列と数字を読み込む方法が分かりません。fgetどうか教えて下されば幸いです。
160
+
161
+
162
+
163
+
164
+
165
+ <追伸>
166
+
167
+ fgets()がファイルの最後にNULLが出てくるまでファイル全て読み込ませる意図でwhile文を書きました。ただfgets()は1行ごとにしか読み込めず、1行目読み込んだ後lineに1行目の文字列が格納されるが、それで2行目読み込んだ後lineに1行目の文字列が消された上で2行目の文字列が格納されるのだと思います(ここら辺の細かい仕組みについてはまだあまり理解できていません)。4行目まで読み込んだ後は4行目の文字列しか格納されてないのでしょう(実行時、最高得点の所は表示されたが「最高得点:Bob (900点)」と表示されていた)。fgets()に改行を読み込ませないか、あるいはfgetc()で読み込むという手がありますが、sscanf()とどう結び付ければよいのかが分かりません。
168
+
169
+
170
+
171
+ 質問書式の体をなしておらずすいませんでした。確かに読む気を起こさせるようなものでは無かったと思っております。これを機会にマナーを守って質問していきます。