- 締切済み
ファイル読み込み処理 ???
1,a,aa,12 2,b,bb,13 3,c,cc,14 4,d,dd,15 5,e,ee,ff 上のようなファイル内容を 読み込込んで 1,a,aa,12 2,b,bb,13 3,c,cc,14 4,d,dd,15 5,e,ee,ff ように表示したいです。 4行目が空欄ですので4行目を飛ばして読み込んで表じしたいです。 どこを修正すればいいですか? #include <stdio.h> #include <string.h> int main(void) { FILE *fp1; char string[128]; /* 文字列を読み込む配列 */ /* ファイルを開けなかったら */ if ((fp1 = fopen("test.txt", "r")) == NULL) { fprintf(stderr, "ファイルを開けません!\n"); return -1; } /* ファイルから失敗するまで行単位で文字を読み込み */ while ((fgets(string, 128, fp1)) != NULL) { string[strlen(string) - 1] = '\0'; /* 余分な改行コードを削除 */ puts(string); /*読み込んだ行を表示 */ } fclose(fp1); /* ファイルを閉じる */ }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
#1です。 さっきのロジックを組み込むのは >string[strlen(string) - 1] = '\0'; /* 余分な改行コードを削除 */ の前です。もし、後ろに組み込むならば、 「配列の先頭要素が'\0'でないときだけ、出力する」となります。
- asuncion
- ベストアンサー率33% (2127/6289)
>4行目が空欄です これが、4行目の先頭文字が改行(\n)であることと同値であるなら、 「配列の先頭要素が'\n'でないときだけ、出力する」というロジックを 追加すればいいと思います。
お礼
解決しました。 ご回答ありがとうございました。
補足
ズバリ処理内容教えていただけませんでしょうか? お願いします!!