2017年12月17日日曜日

開発環境

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

プールパズル(p. 287)

コード

#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);
 }
}

int main()
{
 Island *start = NULL;
 Island *i = 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;
 }

 display(start);

 system("pause");
 return 0;
}

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

>Project2.exe
ファイルsample.txtを開けませんでした。
>type sample.txt
デルフィーノ島
エンジェル島
ヤマネコ島
ネリの島
グレートトッディ
>Project2.exe
名前: デルフィーノ島
 営業時間: 09:00-17:00
名前: エンジェル島
 営業時間: 09:00-17:00
名前: ヤマネコ島
 営業時間: 09:00-17:00
名前: ネリの島
 営業時間: 09:00-17:00
名前: グレートトッディ 営業時間: 09:00-17:00
続行するには何かキーを押してください . . .

>

0 コメント:

コメントを投稿