
C言語の勉強をしいております。
typedef struct address {
char names[32];/* 名前 */
char tels[32];/* 電話番号 */
struct address *prev;/* 前のリスト */
struct address *next;/* 次のリスト */
}Address;
という構造体へ、ファイルから読み込んだテキストデータ(名前と電話番号がTABで区切られている)を格納したいのですが、配列ではなく、動的にメモリを確保しながら格納する方法を教えていただけないでしょうか?
処理の流れとしては、
・1つめの構造体の*prevにはnullを入れておく。
・1つめの構造体へファイルの1件目のデータを格納する。
・ファイルのデータがまだある場合には、malloc関数を使ってメモリを確保し、malloc関数からの戻り値を1つめの構造体の*nextへ格納する。
・構造体へ2件目のデータを格納する。
このような感じだろうという程度しか分からず、ソースも書けずにいます・・・。
配列を使用したサンプルはあるんですが、動的に処理を行う方法を教えていただけないでしょうか?
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
Address* top = NULL;
while(データがある間) {
Address* work;
if (top==NULL) {
top = new Address;
work = top;
work->prev = NULL;
work->next = NULL;
}
else {
work = new Address;
work->prev = NULL;
work->next = top;
top = work;
}
work->namesに格納
work->telsに格納
}
こんな感じです、たぶんプログラム読んでもわからないかも
リスト処理(双方向、片方向)を勉強しないとだめですね
ちなみにソートするのなら、更に面倒です
ご回答ありがとうございます。
記載し忘れていたんですが、C+ではなくC言語です。
> top = new Address;
というのは、新しく構造体を作成しているという事でしょうか?
また、ソートや検索機能(名前や電話番号での前方一致や部分一致)も作成する予定です・・・orz
No.1
- 回答日時:
>このような感じだろうという程度しか分からず、ソースも書けずにいます・・・。
そこまでわかっていれば十分ですよ。
ソースを書けないというのは、どのようなことがことが問題となっているのでしょうか?
malloc()の使用の仕方であれば、
Address *sample;
sample->next = (Address *)malloc( sizeof(Address) );
となります。
尚、一部わざとぼかしているところがあります。
ご回答ありがとうございます。
分からないのは実装方法なんです・・・。
>このような感じだろうという程度しか分からず、ソースも書けずにいます・・・。
の箇所なんですが、実際にループを使用して、ファイルのデータを読み込み、構造体へ格納する方法が分からないんです・・・。
1つめの構造体、2つめの構造体というのを、どう指定すれば良いのかが分かりません・・・。
可能であれば教えていただけないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
txtファイルの数字を計算
-
エクセルのプロパティーでセキ...
-
エクセルvbaでdocuworksprinter...
-
[virtualbox] Windows XP のVHD...
-
アクセス クエリを別のファイ...
-
VBAを使ってセル内に記述してあ...
-
アクセス 自身のデータベース...
-
ffftpでファイル取得が0バイト...
-
VBA 最新のフォルダ取得
-
読み取り専用でファイルを開きたい
-
エクセルのマクロについて教え...
-
同一フォルダ内の別ブックから...
-
shスクリプトでftp接続してファ...
-
HTMLで保存先を指定する方法に...
-
パワーポイントの文字数
-
【マクロ】フォルダにファイル...
-
Access VBA で フォルダ権限...
-
FTPとファイルコピーの違いにつ...
-
Wordで差込印刷した後に別々の...
-
xcopyコマンドの進行状況を表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内の(&H0A)を(&H0D0A)...
-
バイナリファイルでOutOfMemory...
-
Cで2次元配列にCSVファイルを...
-
ファイルから構造体へデータを...
-
ファイル入力のデータを構造体...
-
RGBのバイナリデータをCImageに...
-
Mscomm を使用してバイナリでデ...
-
カウント数について
-
VB6.0 MSFlexGridのMouseRowプ...
-
テキストファイルを後ろから読...
-
DXFファイルをVBで取り込み、図...
-
C言語の問題です。
-
VBScriptの配列は、要素数を指...
-
VBAでテキストファイルの改行を...
-
ファイルからビット単位での読...
-
Unicodeのファイル読み込みがう...
-
バイナリ出力
-
インデックスが配列の境界外で...
-
配列操作について
-
CSVファイルによる検索の高速化
おすすめ情報