Linux/Unix C 编程 标准I/O函数(3):格式化输入输出函数

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

格式化输入:
int scanf(const char *fmt, ...);
int sscanf(const char *buf, const char *fmt, ...);
int fscanf(FILE *fp, const char *fmt, ...);
int vscanf(const char *fmt, va_list arg);
int vsscanf(const char *buf, const char *fmt, va_list arg);
int vfscanf(FILE *fp, const char *fmt, va_list arg);

格式化输出:
int printf(const char *fmt, ...);
int sprintf(char *buf, const char *fmt, ...);
int snprintf(char *buf, size_t n, const char *fmt, ...);
int fprintf(FILE *fp, const char *fmt, ...);
int vprintf(const char *fmt, va_list arg);
int vsprintf(char *buf, const char *fmt, va_list arg);
int vsnprintf(char *buf, size_t n, const char *fmt, va_list arg);
F0int vfprintf(FILE *fp, const char *fmt, va_list arg);

其中带 v 开头的函数是将可变参数表(...)换成 va_list 类型,其它函数就不说了。
本来是想学习一下使用可变参数函数的,可变参数表用到2个函数:
va_start
va_end

//test.c

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

#define MAXLINE 4096

void w_log(char *str, ...)

FILE *fp;
char szfilename[MAXLINE];
char szstr[MAXLINE];
time_t now;
struct tm t;
va_start(vargs, str);
vsnprintf(szstr, MAXLINE, str, vargs);
va_end(vargs);

time(&now);
localtime_r(&now, &t);
sprintf(szfilename, "./w_log.%4d%02d%02d", t.tm_year+1900, t.tm_mon+1, t.tm_mday);
fp = fopen(szfilename, "a+");
if (fp == NULL)
return;
fprintf(fp, "[%4d-%02d-%02d %02d:%02d:%02d] %s\n", t.tm_year+1900, t.tm_mon+1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec, szstr);
fclose(fp);
}
void main()
{
int i;
char sztest[]="gogo args";
i = 1111;
w_log("testtest......");
w_log("%d_%s", 10, sztest);
w_log("%d,%s,%d,%s", 10, sztest, i, "hahaha...");
return;
}
--------------------------------------------------------------------------
结果:$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

[sand@localhost testfmt]$ gcc -o test test.c
[sand@localhost testfmt]$ ./test
[sand@localhost testfmt]$ cat w_log.20090702
[2009-07-02 16:24:04] testtest......
[2009-07-02 16:24:04] 10_gogo args
[2009-07-02 16:24:04] 10,gogo args,1111,hahaha...
[sand@localhost testfmt]$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

你可能感兴趣的:(编程,C++,c,unix,C#)