解答例15-2

【問1】

#include <stdio.h>
#include <string.h>

struct date {
	int yy;		/* 年 */
	int mm;		/* 月 */
	int dd;		/* 日 */
};
struct tosyo {
	char name[100];		/* 図書名 */
	struct date henkyaku;	/* 返却予定日 */
};

int main( void )
{
	struct tosyo work = { "", 0, 0, 0 };
	struct tosyo rireki[100];
	int cnt = 0, i;

	printf( "図書名、返却予定年月日を入力しなさい。(終了条件:Ctrl+Z)\n" );
	while( scanf( "%s %d %d %d", work.name, &work.henkyaku.yy, 
				 &work.henkyaku.mm, &work.henkyaku.dd ) != EOF ) {
		for ( i = 0; i < cnt; i++ ) {
			/* 貸し出し中 */
			if ( strcmp( work.name, rireki[i].name ) == 0 ) {
				printf( "貸し出し中です。別の本を指定してください。\n" );
				break;
			}
		}
		/* 貸し出しOK */
		if ( i == cnt ) {
			printf( "貸し出しOKです。\n" );
			rireki[i] = work;
			cnt++;
		}
		printf( "\n図書名、返却予定年月日を入力しなさい。(終了条件:Ctrl+Z)\n" );
	}

	for ( i = 0; i < cnt; i++ ) {
		printf( "%-20s %4d.%2d.%2d\n", rireki[i].name, 
			rireki[i].henkyaku.yy, rireki[i].henkyaku.mm, rireki[i].henkyaku.dd );
	}

	return 0;
}

※Windows9xとMe上で、Windows系のCを用いて「CTRL+Z」の入力を実行した場合、
 「CTRL+Z」の入力後、次の改行までの表示が行なわれません。(2002.06.11 追記)

戻る


banner初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved