開発環境
- OS: macOS Mojave - Apple
- Text Editor: Emacs
- コンパイラー: LLVM/Clang, GCC(gcc)
- プログラミング言語: C
Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の6章(データ構造と動的メモリ - 架け橋を築く)、自分で考えてみよう(p. 289)を取り組んでみる。
自分で考えてみよう(p. 289)
Makefile
cc = cc all: sample run sample: sample.c cc sample.c -o sample run: sample ./sample
コード
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct island {
char *name;
char *opens;
char *closes;
struct island *next;
} island;
island *create(char *name) {
island *i = malloc(sizeof(island));
i->name = strdup(name);
i->opens = "09:00";
i->closes = "17:00";
i->next = NULL;
return i;
}
void release(island *start) {
island *i = start;
island *next = NULL;
for (; i != NULL; i = next) {
next = i->next;
free(i->name);
free(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];
for (; fgets(name, sizeof(name), stdin) != NULL; i = next) {
next = create(name);
if (start == NULL) {
start = next;
}
if (i != NULL) {
i->next = next;
}
}
display(start);
release(start);
}
入出力結果(Terminal)
$ make < sample.txt cc sample.c -o sample ./sample 名前: アミティ 営業時間: 09:00-17:00 名前: クラッギー 営業時間: 09:00-17:00 名前: イスラヌブラル 営業時間: 09:00-17:00 名前: シャッター 営業時間: 09:00-17:00 $
0 コメント:
コメントを投稿