2025
11
06
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
