• 締切済み

ファイル読み込み処理  ???

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); /* ファイルを閉じる */ }

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

#1です。 さっきのロジックを組み込むのは >string[strlen(string) - 1] = '\0'; /* 余分な改行コードを削除 */ の前です。もし、後ろに組み込むならば、 「配列の先頭要素が'\0'でないときだけ、出力する」となります。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>4行目が空欄です これが、4行目の先頭文字が改行(\n)であることと同値であるなら、 「配列の先頭要素が'\n'でないときだけ、出力する」というロジックを 追加すればいいと思います。

win09
質問者

お礼

解決しました。 ご回答ありがとうございました。

win09
質問者

補足

ズバリ処理内容教えていただけませんでしょうか? お願いします!!

関連するQ&A