C言語なら俺に聞け(入門編)Part 63 at TECH
[2ch|▼Menu]
833:デフォルトの名無しさん
10/05/11 02:39:06
>>827
> ファイルポインタを先頭に置いているときは、
> ftellの結果は 1 と出てくるのが妥当ではないかと感じるのですが

ファイルアドレスは 0 から始まるので、ファイルポインタが先頭、つまり
0 バイト目にある時は ftell() の結果は 0 と出るのが妥当です。
ファイルサイズ 0 の場合に fseek(fp, 0, SEEK_END) した時、ftell() が 1 を
返すのは妥当ではないと感じませんか?
ファイルサイズ 1 の場合に fseek(fp, 0, SEEK_END) した時、ftell() が 2 を
返すのは妥当ではないと感じませんか?

> fseek(fp, 195768, SEEK_SET) と
>  fseek(fp, 0, SEEK_END)
> が一致するなら、データが 195769 個あるように思うため)

いきなり 195768 のように大きなアドレスを扱うから混乱します。
まずファイルサイズ 0 の場合を考えてみてください。
fseek(fp, 0, SEEK_SET) ないし fseek(fp, 0, SEEK_END) をしてもファイル
ポインタは先頭、つまり 0 バイト目を指したままですが、そこに 1 個目の
データが存在すると思いますか?
いいえ、存在しません。

同様に、ファイルサイズ 195768 の場合、fseek(fp, 195768, SEEK_SET)
ないし fseek(fp, 0, SEEK_END) をしてもファイルポインタは 195768 バイト
目を指しますが、そこに 195769 個目のデータが存在すると思いますか?
ファイルサイズ 195768 なのに、最後の 1 バイトのデータはどこから来る
のでしょう?
いいえ、どこからも来ません。データは 195768 個しかありません。

ファイルポインタが指している場所に必ずしもデータが存在するとは限り
ません。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4989日前に更新/245 KB
担当:undef