#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: 

 

 

相关文章:

  • 2021-08-29
  • 2021-11-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-20
  • 2021-08-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-08
  • 2022-12-23
  • 2022-12-23
  • 2021-11-07
  • 2021-08-28
相关资源
相似解决方案