零基础 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
函数来将内容输出到控制台的;
三.猜你喜欢
- C语言 数组下标越界和内存溢出区别
- C语言 使用指针遍历数组
- C语言 指针和数组区别
- C语言 指针数组和数组指针区别
- C语言 野指针
- C语言 函数值传递和址传递
- C语言 函数不定长参数
- C语言 函数指针
- C语言 指针函数
- C语言 回调函数 callback
- C语言 #pragma once
- C语言 #include <> 与 #include “” 区别
- C语言 const 修饰函数参数
- C语言 const 和 define 区别
- C语言 #运算符
- C语言 ##运算符
- C语言 __VA_ARGS__
- C语言 ##__VA_ARGS__
- C语言 函数不定长参数 ##__VA_ARGS__经典案例
- C语言 va_start 宏
- C语言 va_end 宏
- C语言 va_arg 宏
- C语言 vprintf 函数
- C语言 vprintf 函数和 printf 函数区别
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容