掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.29061

ファイルポインタの操作
投稿者---taka(2006/11/27 10:18:56)


テキストファイルからfgetsで1行読込みその行の終端にファイルポインタを移動したいのですがどのようにすればよいのでしょう?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイルポインタの操作 29062 Blue 2006/11/27 10:30:38


No.29062

Re:ファイルポインタの操作
投稿者---Blue(2006/11/27 10:30:38)


> テキストファイルからfgetsで1行読込みその行の終端にファイルポイン
> タを移動したいのですがどのようにすればよいのでしょう?
fgetsは勝手ファイルポインタを改行文字の次の位置に移動するはずです
が、それとはちがうことをしたいということでしょうか?



この投稿にコメントする

削除パスワード

No.29063

Re:ファイルポインタの操作
投稿者---taka(2006/11/27 10:41:34)


>fgetsは勝手ファイルポインタを改行文字の次の位置に移動するはずです
>が、それとはちがうことをしたいということでしょうか?

fgetsで読込んだ後にポインタの位置を見たら途中で止まっていたので困っています。



この投稿にコメントする

削除パスワード

No.29064

Re:ファイルポインタの操作
投稿者---Blue(2006/11/27 10:44:12)


バッファが1行分の文字列以下しかないからでしょう。
読み込んだ文字列に'\n'が存在するか確認して、
なければ再度fgetsして、、、
という作業を繰り返せばよさそうです。


この投稿にコメントする

削除パスワード

No.29065

Re:ファイルポインタの操作
投稿者---taka(2006/11/27 10:57:14)


>バッファが1行分の文字列以下しかないからでしょう。
ご指摘の通り領域が足りていませんでした。
ちなみにテキストファイルから複数行読込む場合にはどのようにすればよいのでしょうか?


この投稿にコメントする

削除パスワード

No.29066

Re:ファイルポインタの操作
投稿者---nop(2006/11/27 11:03:10)


>ちなみにテキストファイルから複数行読込む場合にはどのようにすればよいのでしょうか?

一行の読み込み処理を必要な行数分繰り返せばいい。


この投稿にコメントする

削除パスワード

No.29067

Re:ファイルポインタの操作
投稿者---taka(2006/11/27 11:19:18)


>一行の読み込み処理を必要な行数分繰り返せばいい。
もうひとつ質問なのですが、fgetsで読込んだぎょうの終端から数十バイト分戻して読込むにはどうすればよいでしょうか?fseekを使ったら出来なかったので


この投稿にコメントする

削除パスワード

No.29069

Re:ファイルポインタの操作
投稿者---kafuka(2006/11/27 11:38:49)


>ちなみにテキストファイルから複数行読込む場合にはどのようにすればよいのでしょうか?

fgets()は、エラーが発生するか、またはファイルの終端に達するとNULLを返します。
なので、NULLでない間ループを繰り返すことで、複数行のデータを取得できます。

while (NULL != fgets(....)) {
}

#ただし、エラーでループを抜けたのか終端でループを抜けたのかは必要に応じてチェックが必要。


>fgetsで読込んだぎょうの終端から数十バイト分戻して読込むにはどうすればよいでしょうか?
>fseekを使ったら出来なかったので

#fseek()を使用してできますよ?

似たような質問があるので参考にしてみては?
ファイルの読み込みについて


この投稿にコメントする

削除パスワード

No.29070

Re:ファイルポインタの操作
投稿者---Blue(2006/11/27 11:54:03)


別に1行読み込むだけのバッファがあるならば、ファイルポインタを戻して
再度読み込むなんてことしなくても、読み込んだ文字列を後ろから何バイト
かを見ればよいのでは?
(1行が何バイトあるのかは、strlen関数で取得できる。ただし、改行文字を含む)


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧