メモリアクセス

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Cユーザー

メモリアクセス

#1

投稿記事 by Cユーザー » 13年前

コード:


typeset struct header
{
   long point;
   long count;
}HEADER;

typedef struct lineinfo
{
   time_t  time;
   char  str[100];
}LINEINFO;

typedef struct info
{
    HEADER h;
     //    LINEINFO 
}INFO;

上記のINFO構造体のコメントの部分に
LINEINFOの配列をHEADERのメンバーのcount
分宣言したいのですがコンパイルが通りません。

おそらくポインターで宣言してメモリ確保する必要が
あるかと思います。

INFO* i = (INFO*)malloc(...
という感じでメモリ確保した後、
どういう風に値を書き込んだりするのかわかりません。

ご教授お願いします

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: メモリアクセス

#2

投稿記事 by beatle » 13年前

うーん。イマイチ何がやりたのか分かりませんので想像で回答します。
HEADERのcountは変数なので、実行時にならないと値が決まりません。
ということで

コード:

typedef struct info
{
    HEADER h;
    LINEINFO *lineinfo;
} INFO;

INFO i;
i.lineinfo = (LINEINFO*)malloc(sizeof(LINEINFO) * i.h.count);
のようにしなければなりません。

Cユーザー

Re: メモリアクセス

#3

投稿記事 by Cユーザー » 13年前

レスありがとうございます

その後1つ目のLINEINFOのデータを入れるとき
どのようにしたらいいのでしょうか
memcpy(i.lineinfo・・・

的な感じになると予想してます
またこんな感じでcount分値を入れ
後から3番目に入れたLINEINFOにアクセスして値を取りたい場合
どういうコードになりますか?

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: メモリアクセス

#4

投稿記事 by h2so5 » 13年前

Cユーザー さんが書きました:レスありがとうございます

その後1つ目のLINEINFOのデータを入れるとき
どのようにしたらいいのでしょうか
memcpy(i.lineinfo・・・

的な感じになると予想してます
memcpyを使うということはどこかにコピー元のデータがあるというこうでしょうか?

配列の特定の位置に個別にアクセスしたいのであれば、

コード:

// 一つ目のデータ
i.lineinfo[0] = ...;

// 3つ目のデータ
i.lineinfo[2] = ...;
のようになります。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: メモリアクセス

#5

投稿記事 by softya(ソフト屋) » 13年前

前のトピックを放置しないようにお願いします。
解決内容の書き込みと解決チェックを行うのがルールとなっております。 フォーラムルール → http://dixq.net/board/board.html
「CreateFileMapping • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=12438

【追記】
まず、どのようなデータ構造か説明してもらった方が良いと思います。
それとlongを意図的に使っているんでしょうか? LP64とLLP64ではサイズが違ってくるのですが。
「整数型 - Wikipedia」
http://ja.wikipedia.org/wiki/%E6%95%B4% ... B.E5.90.8D
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Cユーザー

Re: メモリアクセス

#6

投稿記事 by Cユーザー » 13年前

ありがとうございます

最後のアクセス方法が知りたいことでした

Cユーザー

Re: メモリアクセス

#7

投稿記事 by Cユーザー » 13年前

ご指摘感です
帰宅後対応します

閉鎖

“C言語何でも質問掲示板” へ戻る