サイトマップ / C言語講座>出入り口>総目次>目次:ヒープ領域>双方向リスト(ヘッダ)||ソース1||ソース2(出入り口)
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "Myhead.h" /* ファイルの読み書きに使う書式文字列 */ /* 書式指定子はスペースで区切る */ static char *FIELD = "%40s %8lu"; /* ファイルからデータを読み込む */ shop *ReadData(shop *head, FILE *fp) { shop *p; char name[MAX_ITEM_NAME + 1]; unsigned long prise; /* ファイルからデータ読み込みに成功したら */ while ((fscanf(fp, FIELD, name, &prise)) != EOF) { /* メモリを割り付けて */ if ((p = (shop *)malloc(sizeof(shop))) == NULL) { fprintf(stderr, "メモリ不足です。\n"); exit(2); } /* データを書き込む */ strcpy((*p).item.name, name ); (*p).item.prise = prise; p->previous = head; /* head の後ろに */ head->next = p; /* p が来るように */ /* ポインタのつなぎ変え */ p->next = NULL; /* データーの末尾 */ head = p; /* 次のループに備える */ } return (head); } /* ファイルにデータを書き込む */ void *WriteItem(FILE *nfp, shop *head) { head = head->next; /* head にはゴミが入っている */ while (head != NULL) { fprintf(nfp, FIELD, (*head).item.name, (*head).item.prise); head = head->next; } }
/* (C) 2000- YFプロ. All Rights Reserved. */ 提供:C言語講座−それ自体コンパイルできる教材を使った講座です−
サイトマップ / C言語講座>出入り口>総目次>目次:ヒープ領域>双方向リスト(ヘッダ)||ソース1||ソース2(出入り口)