2

宿題の一環として、次の形式のデータを含むファイルをロードする必要があります。

R1  Fre     17/07/2015   18.00     FCN - SDR     0 - 2     3.211   
R1  Lor     18/07/2015   16.00     FCM - VFF     2 - 0     7.232   

そのために、fgets を使用して文字列を一時的な文字列に格納し、その後 sscanf を使用して文字列をフォーマットし、ファイルを 1 行ずつ反復処理しました。

while(fgets(temp, MAX_LINE_SIZE, input_file)!= NULL) {
  sscanf(temp, 
    " %*s %3s %d / %d / %d %s %3s - %3s %d - %d %6s",

    round[i].match[j].weekday, 
    &round[i].match[j].day, 
    ..... And so on ....
  j++;
}

現在の出力は次のとおりです。

Weekday: Fre18.00FCNSDR3.211
Day: 17
Month: 7
Year: 2015
Start: 18.00FCNSDR3.211
Home team: FCNSDR3.211
Away team: SDR3.211
Score: 0 - 2
Viewers: 3.211

予想される出力は次のとおりです。

Weekday: Fre
Day: 17
Month: 7
Year: 2015
Start: 18.00
Home team: FCN
Away team: SDR
Score: 0 - 2
Viewers: 3.211

sscanf の %s プレースホルダーを含む文字列は、何らかの理由でまとめられているようです。

すべての助けに感謝します

4

1 に答える 1

1

Fre4 バイトの文字配列のように文字列を格納していてよろしいですか?

%3s実際には 4 バイトで読み取ります。 Fre、および\0。使用する配列が小さすぎると\0、.

于 2016-11-25T16:12:50.863 に答える