您的位置:首页 > 其它

关于printf系列函数

2011-03-08 19:05 169 查看
#include <stdio.h>

int printf(const char *format, ...);
int fprintf(FILE *
stream, const char *format, ...);
int sprintf(char *
str, const char *format, ...);
int snprintf(char *
str, size_t size, const char *format, ...);

#include <stdarg.h>

int vprintf(const char *format, va_list ap);
int vfprintf(FILE *
stream, const char *format, va_list ap);
int vsprintf(char *
str, const char *format, va_list ap);
int vsnprintf(char *
str, size_t size, const char *format, va_list ap);

he functions in the printf() family produce output according to a format as described below. The functions printf() and vprintf() write output to stdout, the standard output stream; fprintf() and vfprintf() write output to the given output stream; sprintf(), snprintf(),vsprintf() and vsnprintf() write to the character string str.

The functions vprintf(), vfprintf(), vsprintf(), vsnprintf() are equivalent to the functions printf(), fprintf(), sprintf(), snprintf(), respectively, except that they are called with a va_list instead of a variable number of arguments. These functions do not call the va_end macro. Consequently, the value of ap is undefined after the call. The application should call va_end(ap) itself afterwards.

In ISO C99,
snprintf
was introduced as an alternative to
sprintf
that can help avoid the risk of a buffer overflow:

int snprintf(char *str, size_t size, const char * restrict format, ...)


snprintf
is guaranteed not to write more than size bytes into str, so use of it can help avoid the risk of a buffer overflow, as in the following code fragment:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: