2014年2月10日月曜日

開発環境

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

その他参考書籍

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

コード(BBEdit, Emacs)

sample289.c

#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)
{
    island *i = start;
    for (; i != NULL; i = i->next) {
        printf("名前:%s営業時間:%s-%s\n", i->name, i->opens, i->closes);
    }
}

int main(int argc, char *argv[])
{
    island *start = NULL;
    island *i = NULL;
    island *next = NULL;
    char name[80];
    for (; fgets(name, 80, stdin) != NULL; i = next) {
        next = create(name);
        if (start == NULL) {
            start = next;
        }
        if (i != NULL) {
            i->next = next;
        }
    }
    display(start);
    release(start);
    return (0);
}

Makefile

sample289: sample289.c
 cc -g -o sample289 sample289.c

clean:
 rm sample289

入出力結果(Terminal)

$ make sample289 && ./sample289
cc     sample289.c   -o sample289
アトランティス
ティッチマーシュ島
名前:アトランティス
営業時間:09:00-17:00
名前:ティッチマーシュ島
営業時間:09:00-17:00
$

0 コメント:

コメントを投稿