ながら - 日 ミリメートル - 月 YYYY - 年 X、Y、W、Z - 温度scanfの私はフォーマット</p> <p>DDで、我々は処理しなければならないテキストファイルを持っているループとEOF処理
(/用ながら)DD、MM、我々は、このデータを処理するためにアレイを使用することが教示されていない
1,1,2010,20.8,19.2,29.3,20.9
2,1,2010,22.5,15.5,30.7,23.3
3,1,2010,21.4,14.5,21.5,18.9
4,1,2010,27.6,13.4,23.9,18.2
5,1,2010,25,16,26.1,18.3
6,1,2010,23.6,16.1,27.6,21.8
...
29,1,2010,23.5,17.5,30.2,19.6
30,1,2010,36.2,13.4,27.3,20.5
31,1,2010,37.2,17.1,26.6,21.5
1,2,2010,24.9,16.9,27.7,22.6
2,2,2010,35.2,16.7,27.7,22.7
3,2,2010,34.8,21.6,27.3,21.4
...
1,12,2010,26.6,16.5,20.1,17.2
2,12,2010,27.2,17.2,24.3,18.5
3,12,2010,30,17.2,24.4,19.8
...
30,12,2010,23.7,14.2,26.5,20
31,12,2010,41.1,14.9,27.2,21.4
wはYYYY、X、Y、Z、唯一の機能は、/ else文場合、ループおよび動作。
毎月データを個別に処理する必要があります。私のメインコードはwhile (scanf("%d,%d,%d,%f,%f,%f,%f", &dd, &mm, &yyyy, &x, &y, &z, &w) ==7) {}
ループに含まれています。以下は
while (scanf("%d,%d,%d,%f,%f,%f,%f", &dd, &mm, &yyyy, &melmax, &melmin, &sydmax, &sydmin) ==7) {
if (totallinesread==0) {
currentmonth = mm;
printf("Stage 4\n=======\n");
}
if (mm == currentmonth) {
daysinmonthcounted+=1;
/*other totals*/
}else if (mm !=currentmonth){
/*can execute code here as needed such as generating graphs etc*/
printf("0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)\n");
printf("%d\n", daysinmonthcounted);
/* make new currentmonth = mm, reset days counted = 1 */
currentmonth = mm;
daysinmonthcounted = 1;
}
totallinesread+=1;
}
出力:
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
31
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
28
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
31
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
30
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
31
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
30
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
31
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
31
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
30
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
31
0----+----1----+----2----+----3----+----4----+----5 (x 10, degrees C)
30
(Note missing december 31 days at the end)
私は(現在は各月で合計日数を印刷)にたかったが、これは動作し、出力することを発見していて先月一杯で飛び降りている。私はそれがファイルの終わり(EOF)と関係があり、if文の次の 'mm'値が使用されないので(currentmonth != mm
)、それは停止していて、追加の計算コードを処理できません12月。
これは機能する方法はありますか?私はcurrentmonth != mm
で動作するはずのscanf(EOF) = -1
を読んだことがありますか?
データテキストファイルには、エラーがないか、エントリが重複しているとみなされ、昇順になります。
ご協力いただければ幸いです。
ありがとうございました!
@ typo.pl私は、 veは変更を加え、計算コードは機能していないように見えるので、||カッコを入れ替えても使えませんか? – Jian
計算コードはどこですか?計算コードの変数はwhileループ内でのみ宣言されていますか? –
変数(その他とスキャン済み)はwhileループの外側で宣言されます。if文はwhileループ内にあります。私は彼らが( 'mm = currentmonth')と' mm!= currentmonth'を出力して/表示し、合計をリセットして、読み込み時に合計を計算するつもりです。申し訳ありませんが私が不明な場合は、私はあなたの助けに感謝! – Jian