- ベストアンサー
fgetsを用いて改ページまでの文字列を読み込む方法
- fgets関数を使用してファイルから1行ずつデータを読み込んで処理する際に、改ページを認識する方法がわかりません。
- 現在は改行は認識できても改ページを認識できず、改ページも行中の文字として処理されてしまいます。
- 改ページまでの文字列を読み込むためには、手作業で改ページコードを1文字ずつチェックするしかないのでしょうか。他に良い方法があれば教えてください。
- みんなの回答 (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』関数でも出来そうです。→こちらは宿題です。頑張ってね。 ・以上。おわり。
その他の回答 (2)
- Tasuke22
- ベストアンサー率33% (1799/5383)
ANO1の方と同意見です。 コンパイラは改行とEOFしか分からないと思います。 1行読み込むごとに自分で改ページがあるかどうか 調べて、あれば2行に分ける必要があるでしょう。
お礼
アドバイスどおり、改ページがある場合は2行に分けて処理をするようにしました。 どうもありがとうございました!
- suzukikun
- ベストアンサー率28% (372/1325)
改ページはアプリケーション依存で一般的なキャラクターコードではないので別途関数を作るしかないのではないでしょうか?
お礼
ありがとうございました! 確かに改ページはいろいろなパターンがありますね。 一般的なコードではなかったのですか。 おかげさまで解決しました。
お礼
ありがとうございました! 書かれていたstrchr関数を用いた方法をそっくりそのまま使わせていただきました。 教えていただかなければ配列一文字一文字を確認して・・というダサダサの方法でやってるところでした。 P.S.strtok関数は時間の関係でまだためしていません。。