2025
					11
					04
				
					2012
					05
					30
				
可変長引数を使ってログメッセージ作成(C言語)
syslogに出力するのに、可変長引数使ってログメッセージ出力してやろうと 思って少しやったのでメモ。以下ソースはエラー処理とか細かいところはやってません (C言語でsyslog()に出力するのはまた別の記事でやろうかと思います)
ソースコード
/* nex2t_syslog.c */
#include <stdio.h>
#include <stdarg.h>
#define LOG_MESSAGE1 "[20000]: system info\n"
#define LOG_MESSAGE2 "[20001]: system error(%d, %d)\n"
#define LOG_MAIN 1 /* where?         */
void nex2t_syslog(char *fmt, ...);
int main(void)
{
	nex2t_syslog(LOG_MESSAGE1);
	nex2t_syslog(LOG_MESSAGE2, LOG_MAIN, 0);
	/* ~hogehoge~ */
	nex2t_syslog(LOG_MESSAGE2, LOG_MAIN, 7);
	return 0;
}
void nex2t_syslog(char *fmt, ...)
{
	char *p;
	int ival;
	va_list ap;
	va_start(ap, fmt);
	for (p = fmt; *p; p++) {
		if (*p != '%') {
			putchar(*p);
			continue;
		}
		p++;
		ival = va_arg(ap, int);
		printf("%d", ival);
	}
	va_end(ap);
}
コンパイル例
gcc -W -Wall -o nex2t_syslog nex2t_syslog.c
実行結果
./nex2t_syslog [20000]: system info [20001]: system error(1, 0) [20001]: system error(1, 7)
検索用タグ C言語 可変長引数
PR
					
					
																				
										
					2012/05/30 (Wed.) Comment(0) C言語
Comments
	
	