こんにちは。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel オートフィルタのリスト...
-
エクセルで、絶対値の平均を算...
-
表にフィルターをかけ、絞った...
-
配列がとびとびである場合の書き方
-
[エクセル]連続する指定範囲か...
-
ExcelのINDEXとMATCH関数でスピ...
-
Excelのセルの色指定をVBAから...
-
VB6.0 ファイルの一括読込み
-
DataSetから、DataTableを取得...
-
スプレットシートのGetTextにつ...
-
array関数で格納した配列の型を...
-
Excelのオートフィルタで抽出し...
-
VBA 配列に格納した値の平均の...
-
Datatableへの代入
-
[VBA]改行入りのセルの値を配列...
-
Excelの使用方法
-
仮想リストコントロールの表示
-
Excelで配列数式を使わずにとび...
-
エクセル2003 string型のデー...
-
C#でFontStyleの列挙体に値を追...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
エクセルで、絶対値の平均を算...
-
表にフィルターをかけ、絞った...
-
ExcelのINDEXとMATCH関数でスピ...
-
[エクセル]連続する指定範囲か...
-
array関数で格納した配列の型を...
-
配列がとびとびである場合の書き方
-
VBA 配列に格納した値の平均の...
-
DataSetから、DataTableを取得...
-
[VBA]改行入りのセルの値を配列...
-
読み込みで一行おきに配列に格納
-
Excel オートフィルタのリスト...
-
iniファイルのキーと値を取得す...
-
【VBA】ユーザーフォーム リス...
-
Split関数でLong配列に格納する...
-
配列のSession格納、及び取得方...
-
VB6.0 ファイルの一括読込み
-
Dictionaryを使い4つの条件の一...
-
INDEX(D:D,L3)の意味は?
-
SUMPRODUCT関数を用いた最小値
おすすめ情報