• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:fgetsなどをもちいて「改ページ」までの文字列を読み込みたい)

fgetsを用いて改ページまでの文字列を読み込む方法

このQ&Aのポイント
  • fgets関数を使用してファイルから1行ずつデータを読み込んで処理する際に、改ページを認識する方法がわかりません。
  • 現在は改行は認識できても改ページを認識できず、改ページも行中の文字として処理されてしまいます。
  • 改ページまでの文字列を読み込むためには、手作業で改ページコードを1文字ずつチェックするしかないのでしょうか。他に良い方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★他の回答者さんと同意見です。 ・『fgets』関数では『改ページ』コードによる切り分け取得は出来ません。  jabako さんが実装して下さい。 サンプル: FILE *stream; char line[100]; char *seek; char *find; while ( fgets(line,sizeof(line),stream) != NULL ){  for ( seek = line ; (find = strchr(seek,改ページのコード)) != NULL ; seek = find ){   *find++ = '\0';   /*   『改ページ』が見つかったので seek 文字列を処理します。   */  }  if ( *seek != '\0' ){   /*   『改ページ』が見つからないか、『改ページ』の最後の seek 文字列です。   */  } } 最後に: ・上記のサンプルを参考に『改ページ』コードの文字列を分割処理して下さい。 ・『strchr』関数の代わりに『strtok』関数でも出来そうです。→こちらは宿題です。頑張ってね。 ・以上。おわり。

jabako
質問者

お礼

ありがとうございました! 書かれていたstrchr関数を用いた方法をそっくりそのまま使わせていただきました。 教えていただかなければ配列一文字一文字を確認して・・というダサダサの方法でやってるところでした。 P.S.strtok関数は時間の関係でまだためしていません。。

その他の回答 (2)

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.2

ANO1の方と同意見です。 コンパイラは改行とEOFしか分からないと思います。 1行読み込むごとに自分で改ページがあるかどうか 調べて、あれば2行に分ける必要があるでしょう。

jabako
質問者

お礼

アドバイスどおり、改ページがある場合は2行に分けて処理をするようにしました。 どうもありがとうございました!

  • suzukikun
  • ベストアンサー率28% (372/1325)
回答No.1

改ページはアプリケーション依存で一般的なキャラクターコードではないので別途関数を作るしかないのではないでしょうか?

jabako
質問者

お礼

ありがとうございました! 確かに改ページはいろいろなパターンがありますね。 一般的なコードではなかったのですか。 おかげさまで解決しました。

関連するQ&A