2025
01
18
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