2017年12月18日月曜日

開発環境

Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の6章(データ構造と動的メモリ - 架け橋を築く)、自分で考えてみよう(p. 289)を取り組んでみる。

自分で考えてみよう(p. 289)

コード

#include <stdlib.h> // system
#include <stdio.h>
#include <string.h> // strdup

typedef struct Island
{
 char *name;
 char *opens;
 char *closes;
 struct Island *next;
} Island;

Island* create(char *name)
{
 Island *i = (Island*)malloc(sizeof(Island));
 i->name = _strdup(name);
 i->opens = "09:00";
 i->closes = "17:00";
 i->next = NULL;
 return i;
}
void display(Island *start)
{
 for (Island *i = start;  i != NULL; i = i->next )
 {
  printf("名前: %s 営業時間: %s-%s\n", i->name, i->opens, i->closes);
 }
}

void release(Island *start)
{
 Island *next = NULL;
 for (Island* i =start; i != NULL; i = next)
 {
  next = i->next;
  free(i->name);
  free(i);
 }
}

int main()
{
 Island *start = NULL;
 Island *next = NULL;
 char name[80];

 const char *filename = "sample.txt";
 FILE *in_fh = fopen(filename, "r");
 if (!in_fh)
 {
  printf("ファイル%sを開けませんでした。", filename);
  exit(1);
 }
 for (Island* i = NULL; fgets(name, 80, in_fh) != NULL; i = next)
 {
  next = create(name);
  if (start == NULL)
   start = next;
  if (i != NULL)
   i->next = next;
 }

 puts("before");
 display(start);
 release(start);

 system("pause");
 return 0;
}

入出力結果(コマンドプロンプト)

>Project3.exe
before
名前: デルフィーノ島
 営業時間: 09:00-17:00
名前: エンジェル島
 営業時間: 09:00-17:00
名前: ヤマネコ島
 営業時間: 09:00-17:00
名前: ネリの島
 営業時間: 09:00-17:00
名前: グレートトッディ 営業時間: 09:00-17:00
続行するには何かキーを押してください . . .

>

0 コメント:

コメントを投稿