掲示板利用宣言

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

 私は

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

掲示板2

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

No.24424

標準ライブラリを利用して外部ファイルのサイズを知る方法
投稿者---nii(2005/11/30 00:01:41)


題名の通りです。プラットフォームに依存しない方法でお願いします。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:標準ライブラリを利用して外部ファイルのサイズを知る方法 24427 まきじ 2005/11/30 00:35:51
<子記事> Re:標準ライブラリを利用して外部ファイルのサイズを知る方法 24429 nop 2005/11/30 01:03:56


No.24427

Re:標準ライブラリを利用して外部ファイルのサイズを知る方法
投稿者---まきじ(2005/11/30 00:35:51)


>題名の通りです。プラットフォームに依存しない方法でお願いします。

fread() などで 1 バイトずつ読み込む。


この投稿にコメントする

削除パスワード

No.24430

Re:標準ライブラリを利用して外部ファイルのサイズを知る方法
投稿者---nii(2005/11/30 01:52:58)


>>題名の通りです。プラットフォームに依存しない方法でお願いします。
>
>fread() などで 1 バイトずつ読み込む。
ありがとうございました。


この投稿にコメントする

削除パスワード

No.24436

Re:標準ライブラリを利用して外部ファイルのサイズを知る方法
投稿者---たか(2005/11/30 22:39:49)


バイナリモードでopenする。
fseek(fp, 0, SEEK_END); を実行する。
ftell(fp)の返却値がファイルの大きさである。

ただし環境依存です(^_^;)。というのは、ftell()が返す以上のサイズを
持つファイルが存在する可能性があるからです。


この投稿にコメントする

削除パスワード

No.24437

Re:標準ライブラリを利用して外部ファイルのサイズを知る方法
投稿者---RiSK(2005/11/30 22:46:09)


>バイナリモードでopenする。
>fseek(fp, 0, SEEK_END); を実行する。

とした後に(別のプロセスが原因で)
ファイルサイズが変わることもあり,

>ftell(fp)の返却値がファイルの大きさである。

とは限りません。
nopさんの回答がすべてを物語っています。


この投稿にコメントする

削除パスワード

No.24438

Re:標準ライブラリを利用して外部ファイルのサイズを知る方法
投稿者---たか(2005/11/30 23:52:07)


>>バイナリモードでopenする。
>>fseek(fp, 0, SEEK_END); を実行する。
>
>とした後に(別のプロセスが原因で)
>ファイルサイズが変わることもあり,
>
>>ftell(fp)の返却値がファイルの大きさである。
>
>とは限りません。

ftell(fp); を実行した瞬間のファイルの大きさ、とは
言えないでしょうか?特に、共有openしている場合は
この方法はそもそも使えないわけで。

>nopさんの回答がすべてを物語っています。

確かにファイルの概念がない環境はありますね。



この投稿にコメントする

削除パスワード

No.24441

Re:標準ライブラリを利用して外部ファイルのサイズを知る方法
投稿者---RiSK(2005/12/01 00:48:47)


>ftell(fp); を実行した瞬間のファイルの大きさ、とは
>言えないでしょうか?

言えません。


この投稿にコメントする

削除パスワード

No.24443

Re:標準ライブラリを利用して外部ファイルのサイズを知る方法
投稿者---YuO(2005/12/01 01:15:44)


>ftell(fp); を実行した瞬間のファイルの大きさ、とは
>言えないでしょうか?

言えません。
そもそも,fseek(fp, 0, SEEK_END);がまともに機能するとは限らないですから。
理由:fpがバイナリストリームの時,SEEK_ENDを指定したfseek関数の呼び出しは,意味ある動作が保証されない
参照:ISO/IEC 9899:1999 7.19.9.2 The fseek function / Para.3



この投稿にコメントする

削除パスワード

No.24452

Re:標準ライブラリを利用して外部ファイルのサイズを知る方法
投稿者---たか(2005/12/01 15:30:34)


いやあ、参りました。

3 For a binary stream, the new position, measured in characters from the beginning of the
file, is obtained by adding offset to the position specified by whence. The specified
position is the beginning of the file if whence is SEEK_SET, the current value of the file
position indicator if SEEK_CUR, or end-of-file if SEEK_END. A binary stream need not
meaningfully support fseek calls with a whence value of SEEK_END.


この投稿にコメントする

削除パスワード

No.24429

Re:標準ライブラリを利用して外部ファイルのサイズを知る方法
投稿者---nop(2005/11/30 01:03:56)


>プラットフォームに依存しない方法でお願いします。

そもそも、「ファイル」と言う概念がないプラットフォームがある以上、
プラットフォームに依存しない方法はない。


この投稿にコメントする

削除パスワード

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