C语言 vprintf 函数和 printf 函数区别

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门


一.vprintf函数和printf函数声明简介

1.printf 函数声明

int printf(const char *format, ...);

2.vprintf 函数声明

/*
*描述:将可变参数列表的格式化数据打印到stdout
*参数:
*   format  包含格式字符串的C字符串,其格式字符串与printf中的格式相同。
*
*   arg  标识使用va_start初始化的变量参数列表的值。
         va_list是在<cstdarg>中定义的特殊类型。
*   
*返回值:
*   成功后,返回写入的字符总数。
*   如果发生写入错误,则会设置错误指示符(ferror)并返回负数。
*   如果在编写宽字符时发生多字节字符编码错误,则将errno设置为EILSEQ,并返回负数;
*/
int vprintf ( const char * format, va_list arg );

注意:两者传参的区别,实际上 printf 底层就是调用 vprintf 函数来将内容输出到控制台的;


二.vprintf函数和printf函数使用

1.vprintf 函数一般和 va_start / va_end 配套使用;

2.常规情况下,输出到控制台,多数情况下使用 printf 函数即可。当你需要自己写一个自定义 printf 函数时候才需要 vprintf 函数,例如:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.co
//@File:C语言教程 - C语言 vprintf 函数和 printf 函数区别
//@Time:2021/07/16 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/ 

#include "stdafx.h"
#include <stdio.h>
#include <stdarg.h>
void myPtintf(char *format, ...)
{
    va_list args;
    va_start(args, format);
    vprintf(format, args);
    va_end(args);
}
int main()
{
    myPtintf("自定义printf函数:hello world\n");
    myPtintf("自定义printf函数:%s %s\n", "hello world", "C语言教程-猿说编程");
    printf("系统printf函数:hello world\n");
    printf("系统printf函数:%s %s\n", "hello world", "C语言教程-猿说编程");
    return(0);
}

/*
输出:
自定义printf函数:hello world
自定义printf函数:hello world C语言教程-猿说编程
系统printf函数:hello world
系统printf函数:hello world C语言教程-猿说编程
*/

实际上 printf 底层就是调用 vprintf 函数来将内容输出到控制台的;


三.猜你喜欢

  1. C语言 数组下标越界和内存溢出区别
  2. C语言 使用指针遍历数组
  3. C语言 指针和数组区别
  4. C语言 指针数组和数组指针区别
  5. C语言 野指针
  6. C语言 函数值传递和址传递
  7. C语言 函数不定长参数
  8. C语言 函数指针
  9. C语言 指针函数
  10. C语言 回调函数 callback
  11. C语言 #pragma once
  12. C语言 #include <> 与 #include “” 区别
  13. C语言 const 修饰函数参数
  14. C语言 const 和 define 区别
  15. C语言 #运算符
  16. C语言 ##运算符
  17. C语言 __VA_ARGS__
  18. C语言 ##__VA_ARGS__
  19. C语言 函数不定长参数 ##__VA_ARGS__经典案例
  20. C语言 va_start 宏
  21. C语言 va_end 宏
  22. C语言 va_arg 宏
  23. C语言 vprintf 函数
  24. C语言 vprintf 函数和 printf 函数区别

ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容