サイトマップ / 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(出入り口)