Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
16
Добавлен:
01.05.2014
Размер:
1.01 Кб
Скачать
	/* source file: test_vfprintf.c */

	#include <stdio.h>
	#include <stdlib.h>
	#include <stdarg.h>

	typedef enum { INFO, WARN, ERROR, FATAL } MSG_TYPE_ENUM; 

	static int numErr, numWarn, numInfo;


	void msg ( const MSG_TYPE_ENUM mtype, void* format, ... ) 

	{

		switch (mtype) 		{

			case INFO:	numInfo++; 

				break;

			case WARN:	numWarn++; 

				fputs( "Warning: ",stderr );

				break;

			case ERROR:	numErr++; 

				fputs( "Error: ",stderr );

				break;

			case FATAL:	fputs( "Fatal: ", stderr );

				break;

		}

		va_list ap;

		va_start( ap, format );

		vfprintf( stderr, (char*)format, ap );

		va_end( ap );

		if (mtype == FATAL ) exit( 2 );

	}

	

	/* Tets program for the msg function */	

	int main() 

	{

		msg( INFO, "Hello %% %s %%\n", "world" );

		msg( WARN, "There are %d days in %c year\n", 265, "A" );

		msg ( ERROR, "%g x %i = %f\n", 8.8, 8, 8.8*8 );

		msg( FATAL, "Bye-bye\n" );

		return 0;
	}
Соседние файлы в папке ch4