#include

int printf(const char *format, …)

发送格式化输出到标准输出 stdout。

int fprintf(FILE stream, const char format, …)

发送格式化输出到流 stream 中。

  1. FILE * fp;
  2. fp = fopen ("file.txt", "w+");
  3. fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);
  4. fclose(fp);

上述程序编译运行,这将创建 file.txt,内容如下:

  1. We are in 2022

int sprintf(char str, const char format, …)

发送格式化输出到 str 所指向的字符串。

  1. char str[80];
  2. sprintf(str,"%s %s %s %d", "We", "are", "in", 2022);
  3. printf("%s",str);
  1. We are in 2022

int snprintf(char str, size_t size, const char format, …)

设将可变参数 (…) 按照 format 格式化成字符串,并将字符串复制到 str 中,size 为要写入的字符的最大数目,超过 size 会被截断。

  1. char str[80];
  2. char* s = "hello world";
  3. int len = snprintf(str, 7, "%s", s);
  4. printf("%s",str);
  1. hello w

以下函数功能与上面一一对应,只是在函数调用时,把上面… 对应的一个个变量用 va_list 调用所替代。在函数调用前 ap 要通过 va_start() 宏来动态获取。

#include(结合使用)

int vprintf(const char *format, va_list arg)

使用参数列表发送格式化输出到标准输出 stdout。

  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. void WriteFrmtd(char *format, ...)
  4. {
  5. va_list args;
  6. va_start(args, format);
  7. vprintf(format, args);
  8. va_end(args);
  9. }
  10. int main ()
  11. {
  12. WriteFrmtd("%d variable argument\n", 1);
  13. WriteFrmtd("%d variable %s\n", 2, "arguments");
  14. return(0);
  15. }
  1. 1 variable argument
  2. 2 variable arguments

int vfprintf(FILE stream, const char format, va_list ap)

使用参数列表发送格式化输出到流 stream 中。

  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. void WriteFrmtd(FILE *stream, char *format, ...)
  4. {
  5. va_list args;
  6. va_start(args, format);
  7. vfprintf(stream, format, args);
  8. va_end(args);
  9. }
  10. int main ()
  11. {
  12. FILE *fp;
  13. fp = fopen("file.txt","w");
  14. WriteFrmtd(fp, "This is just one argument %d \n", 10);
  15. fclose(fp);
  16. return(0);
  17. }

编译并运行上面的程序,这将打开当前目录中的文件 file.txt,并写入以下内容:

  1. This is just one argument 10

int vsprintf(char str, const char format, va_list arg)

使用参数列表发送格式化输出到字符串。

  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. char buffer[80];
  4. int vspfunc(char *format, ...)
  5. {
  6. va_list aptr;
  7. int ret;
  8. va_start(aptr, format);
  9. ret = vsprintf(buffer, format, aptr);
  10. va_end(aptr);
  11. return(ret);
  12. }
  13. int main()
  14. {
  15. int i = 5;
  16. float f = 27.0;
  17. char str[50] = "runoob.com";
  18. vspfunc("%d %f %s", i, f, str);
  19. printf("%s\n", buffer);
  20. return(0);
  21. }
  1. 5 27.000000 runoob.com

int vsnprintf(char str, size_t size, const char format, va_list ap)

设将可变参数列表按照 format 格式化成字符串,并将字符串复制到 str 中,size 为要写入的字符的最大数目,超过 size 会被截断。

资料搜集于菜鸟教程
https://blog.csdn.net/qq_51491920/article/details/123178286