開発環境
- OS: Windows 10 Pro
- IDE(統合開発環境): Visual Studio 2017 (Clang/C2(試験的))
- プログラミング言語: C(Visual C)
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 コメント:
コメントを投稿