
こんにちは。
FILE *fp;
SIZE 1024;
int n;
char Buf[1025];
while((n = fread(Buf,1,SIZE,fp)) != 0){
}
というように、fread関数を用いて1024バイトずつ配列Bufへ格納しています。
以下に示すようなことを行う場合、どのように記述すればよいのでしょうか?
B:バイナリデータ
T:数値
TBBBBBBBBB・・・・・・B←1024バイト目
TBBBBBBBBB・・・・・・B
・
・
・
・
TBBBBBBBBB・・・・・・B
というように、配列内に格納したいと思っています。
Tは、テキストデータで1,2,3・・・・100という整数型を格納。Bは、バイナリデータでfread関数から取得したバイナリデータを格納します。
なぜ、Tを格納したいかといいますと、どのバイナリデータを指しているか?を判別するためです。
上記のようなことを行うためには、2次元配列を使用すればよいのでしょうか?
例:char Buffer[100][1025]
No.5ベストアンサー
- 回答日時:
UDP…でしょうか?あまり詳しくないのでよくわかりませんが(再送は手動でやるんでしたっけ)
とにかくやりたい事は理解しました。
/***************************/
struct tempBuf{
int Number;
char Data[1024];
}
....中略.....
struct tempBuf test[100];
test[0].Number = 0;
strcpy(test[0].Data, "hellow world");
send(listen, &test[0], sizeof(test[0]), 0 );
/***************************/
↑これでテストしてみましたが上手い事出来たので
構造体でOKですね。(ソケット通信ですよね?)
仮に配列に直接通し番号を入れるなら受信側で
数値とデータを分けるルーチンが必要になります。
逆に言えばそれさえ作れば16進数でもasciiコードでも
適当に入れりゃいいんですけどね。
返信ありがとうございます
UDPソケットを利用しています。再送機構がないので、アプリケーションで実装を試みています。
大変分かりやすい説明ありがとうございました。
No.4
- 回答日時:
おっしゃるとおり、2次元配列を使えばよいのではないでしょうか。
Tもいりませんし。
================================
FILE *fp;
SIZE 1024;
int n,i;
char Buf[100][1024];
for( i = 0;i < 100; i++){
while((n = fread(Buf[i],sizeof(char),SIZE,fp)) != 0){
}
}
================================
1次元目の配列の数値(0~99)がTにあたるので、それを使えばよいのでは?
返信ありがとうございます。
構造体で行うのか、2次元配列を用いるのか二つの方法を知ることができました。
ありがとうございました。
No.3
- 回答日時:
構造体は分けて扱うという意味合いだったのですが
どうしても配列に格納したいと言う事ですね。
それでしたら普通に数字入れた後に読み込んだデータを追加したら
良いと思うのですが。
どういった所が解らないのでしょうか?
数字を配列に入れる
↓
読み込んだデータを配列に追加する。
↓
次の配列へ
この繰り返しでいけます。
あと念のためアウトプットの方法を示して下さい。
あ、もしかしてもしかするとデータを全部テキストで扱いたいって事ですか?
この回答への補足
返信ありがとうございます。
申し訳ありません。私が行いたいことは・・・
1.送信端末と受信端末を用意し、送信端末で100パケット(1パケット1024Byte)を受信端末へ送信します。その際、各パケットに通番を付加しておきます。
2.受信端末は送信端末からのパケットを受信し、通番を確認します。通番を確認した際に、未受信の通番を送信端末へ送信します。
3.送信端末は、受信端末から送信されてきた、通番(受信端末で取得することができなかったパケットの通番)を見て再度、その通番のパケットを送信します。
このように、動作1の時に、通番+fread関数で読み取った1024Byteのバイナリデータをメモリに格納しておきたいと思っています。←これが質問内容です。
herbestさんと#2の方がご提示してくださった、構造体と配列でしょうか?を利用した方法をとりたいと思います。
>あ、もしかしてもしかするとデータを全部テキストで扱いたいって事ですか?
通番はテキストデータ
パケット部はバイナリデータ
としたいと思っています。通番もバイナリデータとして扱ってよいのか分からないためです・・・
通番は、1,2,3・・・という数値型です。
よろしくお願いします。
No.1
- 回答日時:
二次元配列でいけますが配列は1027バイトいりますよ。
(100で3バイト)ただ、アウトプットをどうしたいのかによりますが
恐らく構造体を使って数値とデータを分けたほうが想像してる使い方が出来ると思います。
この回答への補足
返信ありがとうございます。
>恐らく構造体を使って数値とデータを分けたほうが想像してる使い方 >が出来ると思います。
struct tempBuf{
int 数値;
char Buf[1027];
}A_Buffer;
というような記述でしょうか?
1BBBBBBBB・・・・・B
2BBBBBBBB・・・・・B
・
・
・
100BBBBBBB・・・・・B
B:バイナリデータ
というように、配列内に格納したいと思っています。
上記の記述のような構造体であれば、上書きされてしまう恐れがあると思っているのですが・・・・
どのような記述方法があるか、わかりましたら教えて頂きたいと思っています。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- C言語・C++・C# C言語のバイナリファイルに関する質問 8 2022/06/24 07:20
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# 10人分の生徒の英語の点数{32,34,41,38,40,26,14,46,42,50} と数学の点 2 2022/05/26 21:31
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[エクセル]連続する指定範囲か...
-
表にフィルターをかけ、絞った...
-
エクセルで、絶対値の平均を算...
-
array関数で格納した配列の型を...
-
ExcelのINDEXとMATCH関数でスピ...
-
配列がとびとびである場合の書き方
-
エクセルでエラーを無視して一...
-
エクセル 条件を指定した標準...
-
VBAでの100万行以上のデータの...
-
iniファイルのキーと値を取得す...
-
Excelのセルの色指定をVBAから...
-
.NET - 配列変数を省略可能の引...
-
Excel オートフィルタのリスト...
-
For Nextマクロの高速化につい...
-
【VBA】ユーザーフォーム リス...
-
VBAで指定期間の範囲を抽出し、...
-
数字配列データを画像に変換す...
-
複数のレコードを取得する方法
-
Datatableへの代入
-
EXCEL VBA カンマ区切りの文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、絶対値の平均を算...
-
[エクセル]連続する指定範囲か...
-
表にフィルターをかけ、絞った...
-
ExcelのINDEXとMATCH関数でスピ...
-
Excelのセルの色指定をVBAから...
-
Excel オートフィルタのリスト...
-
DataSetから、DataTableを取得...
-
array関数で格納した配列の型を...
-
読み込みで一行おきに配列に格納
-
.NET - 配列変数を省略可能の引...
-
【VBA】ユーザーフォーム リス...
-
配列がとびとびである場合の書き方
-
SUMPRODUCT関数を用いた最小値
-
iniファイルのキーと値を取得す...
-
VBAでの100万行以上のデータの...
-
エクセルでエラーを無視して一...
-
配列のSession格納、及び取得方...
-
VBA 配列に格納した値の平均の...
-
VB6.0 ファイルの一括読込み
-
Datatableへの代入
おすすめ情報