No.1ベストアンサー
- 回答日時:
勘違いしてたらゴメンナサイ。
テーブル展開でお悩みとは、要するに可変長列/可変長行のファイルの内容をメモリ上に展開したいがどういうデータ構造にすれば良いか?という意味ですか?
多次元の可変長データならリスト構造が定石かなぁ?
ファイルから1行読んだ後、lengthを取って見合う長さのエリアをallocし、そこにstrcpy、さらにリスト構造体をallocしてそこに前述の文字列の先頭ポインタを代入、次行以降これを繰り返してリスト構造体を繋げていく。
1charづつリスト構造体に入れて2次元リストにする手もありますが、1行分の文字列の登録/抽出処理が面倒になるので、行方向は1本の文字列として上記の様にlengthを見てallocしてしまうのが簡単かと。
こんな文章ではイメージできない!(もっともだ)様でしたら、下記URLなどを参考にして下さい。
最後に、リスト構造はゴミ掃除が大変なのでご注意を。
参考URL:http://www.st.rim.or.jp/~phinloda/cqa/cqa4.html# …
No.2
- 回答日時:
用途によっていろいろやり方があると思うので,
何をしたいかによると思います。
文字列が可変長でも文字列の数が固定かどうかとか、
あとで中身を別の物に長さも変えて入れるかどうかとか、
…。
また、共有メモリを使う場合、単一の領域のみ使うか,
複数使ってもよいか、大きさはどのぐらいにするかでも
違ってくると思います。
OSによっても多少事情がことなるかも知れませんし,
その共有メモリを使うのはどういうプログラムであるか、
いくつのプロセスがそれを同時に使うのかとか。
一応どんな場合でも共通と思うのは,ある程度の大きさを
一度にまとめてとる必要があることです。
malloc()を使う場合は数バイトのを沢山とっても
あまり気にする必要はありませんが、共有メモリの場合は
そうはいきません。
たとえば、256Kbyte領域をとって、その中を自分で
管理して使う、つまり、malloc(),free()に相当する
ことを自分でやる必要があります。
まあ、固定の大きさのテーブルをとるなら、そこまで
やる必要はありませんけど。
これは、共有メモリを管理するのはOSにとっては
かなり負荷の大きいことによります。
だから、領域はまとめて少ない数を使う必要があるわけです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PDF パソコンからUSBメモリにPDFを移したらファイルを開けない 2 2022/08/22 11:42
- 数学 多変数関数の微分とテイラー展開について 5 2022/04/24 16:55
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- 日本語 興味津津という四字熟語の使い方について 2 2023/05/30 17:59
- デスクトップパソコン windows7からwindows10にアップグレードしようとしたのですが、ファイルの展開中に「0x 3 2022/06/17 22:54
- 数学 「f(z)=1/(z^2-1)に関して ローラン展開を使う場合、マクローリン展開を使う場合、テイラー 3 2022/08/27 19:56
- その他(映画) 今アマプラで無料で観られるハラハラ展開が気になる映画 2 2023/03/25 18:48
- 工学 f(z)=tan(z) の 0<|z-π/2|<π での ローラン展開 f(z)=Σ_{n=-∞~∞ 4 2022/07/11 03:53
- Excel(エクセル) Excei で、項目の横展開 2 2023/07/15 09:56
- Amazon Amazonのコンビニ(Amazon Go)について。 2016年から17年にかけて「Amazonが 3 2022/10/04 20:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで=より左の文字を一括で...
-
エクセルでアルファベットか数...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
文字列からタブコードを取り除...
-
OnTime 使用時のプロシージャへ...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
[C言語]fputsとfprintfの違い
-
Msgboxの×が押されたとき
-
【Excel VBA】複数ある特定の文...
-
エクセルで文字列の最大値を抽...
-
MS SQLServer のSQLで文字列の...
-
16進数を10進数に簡単に変換す...
-
C#で年月を比較する
-
エクセルで文字列をtxtファイル...
-
Left関数とRight関数を合わせた...
-
VBの「As String * 128」とは?
-
Access2000 (VBA) ' & "など...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
Excelで指数表現しないようにす...
-
エクセルで文字列の最大値を抽...
-
エクセル 数値データを桁をそ...
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
sedなどで、特定の文字列の後の...
-
MS SQLServer のSQLで文字列の...
-
Left関数とRight関数を合わせた...
-
Msgboxの×が押されたとき
-
アクセスで特定の数字以外(複...
-
【Excel VBA】複数ある特定の文...
-
エクセルでセル内の文字列の最...
-
C#で年月を比較する
おすすめ情報