No.3ベストアンサー
- 回答日時:
例えば
char data[100] ;
とした data 全部をfreadで読む/fwriteで書く場合
バッファはdataの先頭なので data でいいです。型をあわせるために (void *)data と書いてもよいでしょう。
サイズは data の一個一個の大きさです。char型なので sizeof(char) になります。
数値はその個数なので、宣言から 100 になります。
例えば
int data2[1000];
の200番目から30個に読み込むなら
fread( & ( data2[200] ) , sizeof(int), 30 , fp );
ですし
short s ;
に読みこむなら、sの領域に1個読み込む、と考えて
fread( &s , sizeof(short), 1, fp );
です。
No.4
- 回答日時:
質問の"サイズ"/"数値"の表現を使うと、一般には、
サイズ:オブジェクトのサイズ(バイト数)
数値:オブジェクトの個数
です。
注意すべきは、fread/fwriteは戻り値として実際に読み書きしたオブジェクトの個数を返すということです。
100Byteのcharの配列の読み書きを行う場合、
char buf[100];
int n = fread(buf, 1, sizeof buf, fp);
とすると、nはsizeof bufより小さな値が返る事があり、続きから再度読み込む処理が必要になります。
int n = fread(buf, sizeof buf, 1, fp);
とすると、戻り値で1(成功)か0(失敗)を判断することができます。
No.2
- 回答日時:
どこから始まる
大きさいくつの領域を
何個分
読むか、を指定します。
大きさいくつ、がサイズに、何個分、が数値に、それぞれ相当します。
どこから始まる、というのは何かのアドレスを示すのですが、
どんな型のアドレスにも対応できるよう、void *となっています。
char *やint *に決めうちするわけにはいきませんからね。
No.1
- 回答日時:
void*とは「どんな型へのポインタでもOK」というものです。
つまり int*でもchar*でも何でもいいですよと言う意味です。
サイズは通常sizeofを使用します。
数値は、特に何も考えなければ 1 でよいのではないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語について教えて欲しいです。 ファイルの中身をコピーするプログラムを作ってます aというファイル 7 2022/11/03 19:21
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# C pointer? or... 2 2022/03/29 00:47
- C言語・C++・C# C言語 ポインタ 配列 2 2022/06/02 17:29
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# 100バイトのバイナリファイルを読み込んで別のファイルに書き込みたいのですが、型をどうすればいいのか 1 2022/11/03 17:11
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のintとcharの違いってな...
-
小数点入りの文字列をfloat型に...
-
CStringからchar*への型変換に...
-
C言語のプログラムについてです
-
SubStringの使い方について
-
ASCIIコードへの変換方法
-
strcat関数を自作したいです
-
char*を初期化したいのですが
-
C言語にて構造体のメンバがNULL...
-
文字列の途中から途中までを抽出
-
簡易版smtpクライアント(メール...
-
char型にint型の数値を代入する。
-
ポインタの配列でエラーが出て...
-
char *name1[4] とchar name2[]...
-
警告 : 問題のあるポインタの変換
-
fgetsで読み込んだ値のvector処理
-
char 文字列型 の表現範囲が-12...
-
C言語 配列の長さの上限
-
セグメントエラー
-
fopne で失敗する原因
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
C言語のintとcharの違いってな...
-
小数点入りの文字列をfloat型に...
-
new charとnew char[N]の違いは?
-
const char* s1とただのchar s1...
-
DWORDとcharの変換
-
strcat関数を自作したいです
-
C++17で、unsigned char * 配列...
-
文字列内の数字削除
-
エクセルのMID関数は、C言語では?
-
char 文字列型 の表現範囲が-12...
-
char型にint型の数値を代入する。
-
C言語を用いた環境変数の作成/...
-
動的メモリの初期化方法について。
-
fstream型オブジェクトを関数の...
-
C言語のプログラムについてです
-
文字列の途中から途中までを抽出
-
C言語:小文字を大文字に変換す...
おすすめ情報