C/C++ vprintf函数和printf函数区别

最后更新于:2020-11-03 00:35:01

一.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函数,例如:

/*
/************************************************************************/
/*@文件名      : vprintf函数/printf函数/va_start/va_end.cpp                                                       
/*@日  期      : 2020/10/14 21:52
/*@作  者      : 猿说编程 
/*@公众号      : 猿说编程
/*@博客        : www.shuopython.com
/*@描述        : C语言教程 - vprintf函数/printf函数/va_start/va_end
/************************************************************************/

#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语言教程-猿说编程
*/


1. 三目运算符

2. 逗号表达式

3. char和wchar_t相互转换

4. wprintf输出中文乱码

5. unicode和多字节区别

6. Debug和_DEBUG区别

7. Debug和Release区别

8. _WIN32/WIN32/_WIN64/WIN64区别

9. memcpy/strcpy/strcpy_s区别

10. NaN(Not a Number)

11. INF:infinite)



转载请注明: 猿说编程 »C/C++教程 »vprintf函数和printf函数区别

赞赏

微信赞赏支付宝赞赏