- C言語なら俺に聞け(入門編)Part 127 [転載禁止]©2ch.net
587 :デフォルトの名無しさん[sage]:2015/01/10(土) 08:01:51.57 ID:lyLN6stF - >>585
/* 配列やポインタの使い方も覚えないと。とりあえず答え書いていく。検証してないから文句はなし。駄目だったら自分で直すかまた聞く。 */ FILE *fp; int rCnt, rTotal, bCnt, gTotal, i, ret; char s[6]; fp = fopen("color.txt", "r"); if (fp == NULL) { perror(NULL); return -1; } while ((ret = fscanf(fp, "%5[^0-9]%d\n", s, &i)) == 2) { if (!strcmp(s, "red")) { rCnt++; rTotal += i; } else if (!strcmp(s, "blue")) bCnt++; else if (!strcmp(s, "green")) gTotal += i; else { printf("%s: illegal name\n", s); return -1; } } fclose(fp); /* EOFはエラーの場合にも返される。区別したいのならferror等を用いること。 EOFでも2でもないということは、要素が2個当てはまらなかった、つまり不正な書式ということ。 */ if (ret != EOF) { printf("illegal format\n"); return -1; } printf("aka=%d\nao=%d\nmidori=%d\n", rTotal / rCnt, bCnt, gTotal); return 0;
|
|