この記事はおさむん家 Advent Calendar 2014の記事ですね?
C99(ISO/IEC 9899:1999)以降の標準Cには、ジャニーズ事務所に関するライブラリが含まれています。(嘘です)
#include <stdjohnnys.h>
#define IS_AVAIL 1
typedef struct JOHNNYS {
char* name;
char* group;
int status;
struct JOHNNYS* start;
struct JOHNNYS* next;
} johnnys_t;
extern int init_johnnys(johnnys_t** dest_members, char* group, int all, ...);
extern void dissolve_johnnys(johnnys_t* members);
/* GNU拡張 */
extern void mary_kitagawa(johnnys_t** members);
このライブラリに含まれる関数を利用すれば、ジャニーズ事務所に所属する様々なグループを管理する事ができ、非常に便利です。
ここではサンプルとして、ジャニーズ以外の人物で利用してみましょう。
基本的な流れはinit_johnnys()
でグループを結成し、dissolve_johnnys()
で解散(開放)する手順で利用します。
#include <stdio.h>
#include <stdjohnnys.h>
int main(void)
{
johnnys_t* list = NULL;
if (init_johnnys(&list, "太陽礼拝\0", 6,
"sasairc\0", "844196\0", "hyousikinuko\0", "keepoff07\0", "osamu\0", "土屋裕次郎\0") < 0)
return 1;
list = list->start;
fprintf(stdout, "**** %s ***\n", list->group);
list->status ^= IS_AVAIL;
while (list->next != NULL) {
fprintf(stdout, "name = %s, status = %d\n",
list->name, list->status);
list = list->next;
}
dissolve_johnnys(list);
return 0;
}
これをビルドし実行すると、次のような結果が得られます。
**** 太陽礼拝 ***
name = sasairc, status = 0
name = 844196, status = 1
name = hyousikinuko, status = 1
name = keepoff07, status = 1
name = osamu, status = 1
name = 土屋裕次郎, status = 1
便利ですね。
先日、GNU libcによる独自拡張でmary_kitagawa()
が追加されました。これは、メリー喜多川氏の意向を反映したものです。
早速その機能を利用してみましょう。
#include <stdio.h>
#include <stdjohnnys.h>
int main(void)
{
johnnys_t* smap = NULL;
if (init_johnnys(&smap, "SMAP\0", 5,
"中居\0", "稲垣\0", "草なぎ\0", "木村\0", "香取\0") < 0)
return 1;
smap = smap->start;
while (smap->next != NULL) {
fprintf(stdout, "name = %s,\tgroup = %s,\tstatus = %d\n",
smap->name, smap->group, smap->status);
smap = smap->next;
}
putchar('\n');
mary_kitagawa(&smap);
smap = smap->start;
while (smap->next != NULL) {
fprintf(stdout, "name = %s,\tgroup = %s,\tstatus = %d\n",
smap->name, smap->group, smap->status);
smap = smap->next;
}
dissolve_johnnys(smap);
return 0;
}
name = 中居, group = SMAP, status = 1
name = 稲垣, group = SMAP, status = 1
name = 草なぎ, group = SMAP, status = 1
name = 木村, group = SMAP, status = 1
name = 香取, group = SMAP, status = 1
name = (null), group = (null), status = 0
name = (null), group = (null), status = 0
name = (null), group = (null), status = 0
name = 木村, group = SMAP, status = 1
name = (null), group = (null), status = 0
このように、木村拓哉さん以外抹消されます。執念というのは恐ろしい。
ここから下は読む必要ありません。