
man fwrite(3) を見ると、宣言は以下のようになっています。
size_t fwrite(const void *BUF, size_t SIZE, size_t COUNT, FILE *FP);
「BUF から、1つあたり SIZE byte を COUNT 個 FP に書き込む」という関数だと思うのですが、SIZE と COUNT 値はどう指定したらよいのでしょうか?
たとえば、char BUF[1024] で全部書き込みたい場合に、SIZE = 1, COUNT = 1024 と指定するのと、SIZE = 4, COUNT = 256 と指定するのでは、書き込み速度や結果に違いが出るのでしょうか?
No.2ベストアンサー
- 回答日時:
ライブラリの実装しだいでは、書き込み動作自体にも違いが出る可能性がなくもないかと思います。
現実に違うことはほとんどないと思いますが...速度的な違いは、多くの場合、乗除算の速度に依存する気がします。乗除算器を持たないプロセッサや、あっても貧弱なためにC言語の演算を実現できない場合には、ソフト的に計算しますので、オペランドの値によって計算にかかる時間が変わります。
この回答への補足
回答ありがとうございます。
「動作自体に違いが出る」というのは、結果としてできあがるファイルが異なるということでしょうか?
できあがるファイルが異なる場合、どのようなファイル内容になることがあり得ますか?
No.3
- 回答日時:
#2です。
> 「動作自体に違いが出る」というのは、結果としてできあがるファイルが異なるということでしょうか?
実際そのような実装があるかどうかは知りませんが...
例えば、要素の書き込みごとに排他制御を行っているような実装であれば、複数のタスクから同じファイルに書き込んだ場合、できあがるファイルの内容が異なる可能性はあるかと思います。
標準Cの規定では、マルチタスク環境のことが考慮されていませんから、排他制御の方法は完全に実装依存になります。
No.1
- 回答日時:
ソースを見ると、ファイルへの書き込みは SIZE * COUNT バイト書いているだけなので、書き込み結果は同じ。
ただし、戻り値は SIZE 単位で何個書き込めたかが返ってくるので後者の場合は全て書き込めた場合には 256が返ってくる。
まぁ、fwrite( (const void*)BUF, sizeof(char), 1024, fp ) という風に BUF の要素のサイズを第2引数に、配列のサイズを第3引数にするのが常識的対応か?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- パスポート・ビザ マインナバーカードの写真記載通り皆さんは写真でだしましたよね? パスポートsizeでしたよね? 私は 5 2022/10/05 12:44
- 英語 量を"size"で表現することの可否等について 1 2022/12/07 14:49
- HTML・CSS スマホ表示用のwebページ、style.cssでは表の中の文字 font-size は指定できない? 1 2023/03/27 18:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
binファイルを解凍したいの...
-
リンクの張り付けかたを教えて...
-
.NETアプリを作ったときの .man...
-
VBAからファイルをセル入力から...
-
自分で作成した重要ファイルを...
-
#include <Windows.h>というヘ...
-
ADODB.Streamで開いたファイル...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで作成日時...
-
ストレージにある全てのファイ...
-
VBAのバイナリ出力について
-
【VBS】 iniファイルの特定部...
-
フォームで入力したテキストを...
-
VBSでExcelファイル起動時、重...
-
Latexで図番号だけを「図1.1」...
-
warファイルをEclipseでプロジ...
-
C#でログファイルにファイルパ...
-
ウェブアートデザイナーファイ...
-
「ブルーファイル」と「グリー...
-
CSSを1ページに1枚作るのって変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで作成日時...
-
.NETアプリを作ったときの .man...
-
リンクの張り付けかたを教えて...
-
#include <Windows.h>というヘ...
-
Latexで図番号だけを「図1.1」...
-
jarファイル
-
「ブルーファイル」と「グリー...
-
ファイルが開かれているかどう...
-
バッチ処理で追記コピーしたい
-
VBAのバイナリ出力について
-
公文書のxmlファイルの開き方が...
-
コマンドプロンプトで、指定し...
-
監視ツールを入れさせられまし...
-
自分で作成した重要ファイルを...
-
HTMLからのBATファイル実行
-
VBSが起動しない
-
他のMDBのマクロを実行する方法
-
Batファイルをバイナリ形式にす...
おすすめ情報