/**
*----------------------------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, ...)
*
* --------------------------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)
*/
#include <stdio.h>
#include <stdarg.h> int _vprintf(const char *fmt, ...){
int ret;
va_list ap;
va_start(ap, fmt);
ret = vprintf(fmt, ap);
va_end(ap);
return ret;
} int _vfprintf(const char *fmt, ...){
int ret;
va_list ap;
va_start(ap, fmt);
ret = vfprintf(stdout, fmt, ap);
va_end(ap);
return ret;
} int _vsprintf(const char *fmt, ...){
char buf[];
int ret;
va_list ap;
va_start(ap, fmt);
ret = vsprintf(buf, fmt, ap);
printf("%s", buf);
va_end(ap);
return ret;
} int _vsnprintf(const char *fmt, ...){
char buf[];
int ret;
va_list ap;
va_start(ap, fmt);
ret = vsnprintf(buf, sizeof(buf),fmt, ap);
printf("%s", buf);
va_end(ap);
return ret;
} int main(){
int ret;
char buf[]; //printf
ret = printf("%d---%s\n", , "printf");
printf("ret = %d\n", ret); //fprintf
ret = fprintf(stdout, "%d---%s", , "fprintf");
printf("ret = %d\n", ret); //sprintf
ret = sprintf(buf, "%d---%s", , "sprintf");
printf("%s, ret = %d\n", buf, ret); //snprintf
ret = snprintf(buf, sizeof(buf), "%d---%s", , "snprintf");
printf("%s, ret = %d\n", buf, ret); //vprintf
ret = _vprintf("%d---%s\n", , "vprintf");
printf("ret = %d\n", ret); //vfprintf
ret = _vfprintf("%d---%s\n", , "vfprintf");
printf("ret = %d\n", ret); //vsprintf
ret = _vsprintf("%d---%s\n", , "vsprintf");
printf("ret = %d\n", ret); //vsnprintf
ret = _vsnprintf("%d---%s\n", , "vsnprintf");
printf("ret = %d\n", ret);
}

c语言:printf系列的函数的更多相关文章

  1. C语言printf()函数的格式化字符串

    原文链接:https://www.runoob.com/cprogramming/c-function-printf.html#include<stdio.h> #include<s ...

  2. C语言printf()函数:格式化输出函数

    C语言printf()函数:格式化输出函数 头文件:#include <stdio.h> printf()函数是最常用的格式化输出函数,其原型为:     int printf( char ...

  3. 智能合约语言 Solidity 教程系列3 - 函数类型

    Solidity 教程系列第三篇 - Solidity 函数类型介绍. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以 ...

  4. Go语言入门系列(六)之再探函数

    Go语言入门系列前面的文章: Go语言入门系列(三)之数组和切片 Go语言入门系列(四)之map的使用 Go语言入门系列(五)之指针和结构体的使用 在Go语言入门系列(二)之基础语法总结这篇文章中已经 ...

  5. C语言:宽字符集操作函数(unicode编码)

    C语言:宽字符集操作函数(unicode编码) 字符分类: 宽字符函数 普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测 ...

  6. C语言不定型参数函数定义

    我们在C语言中定义一个函数,通常都是需要在函数原型中规定这个函数需要提供什么类型的参数以及需要提供多少个.也就是,你的参数必须明确.但是我们调用函数库中的printf和scanf函数会发现,它们似乎是 ...

  7. C语言:宽字符集操作函数

    C语言:宽字符集操作函数 (unicode编码) 字符分类: 宽字符函数普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测 ...

  8. C++ 系列:函数可变长参数

    一.基础部分 1.1 什么是可变长参数 可变长参数:顾名思义,就是函数的参数长度(数量)是可变的.比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的.下面是 printf ...

  9. Go语言入门系列(五)之指针和结构体的使用

    Go语言入门系列前面的文章: Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 Go语言入门系列(四)之map的使用 1. 指针 如果你使用过C或C++,那你肯定对指针这个概念 ...

随机推荐

  1. ajax点赞功能

  2. 发布一个java Servlet (静态发布)

    Servlet 是sun开发的动态web资源 的技术 让 Servlet 能响应用户请求,必须将 Servlet 配置在 Web 应用中 如何将Servlet用Tomcat发布出去: 编译你的.jav ...

  3. 【代码笔记】iOS-利用图片序列创建动态图片效果

    一,效果图. 二,代码. RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional se ...

  4. NSoperation线程通信

    全局变量 @property (weak, nonatomic) IBOutlet UIImageView *imageView; @property (nonatomic, strong) NSOp ...

  5. Atitit.android js 的键盘按键检测Back键Home键和Menu键事件

    Atitit.android js 的键盘按键检测Back键Home键和Menu键事件 1. onKeyDown @Override public boolean onKeyDown(int keyC ...

  6. UITableView传值(自己使用)(属性,代理传值)

    今天有些匆忙. 效果图如下: 代码如下: #import <UIKit/UIKit.h> #import "FirstViewController.h" @interf ...

  7. mysql 判断表字段或索引是否存在

    判断字段是否存在: DROP PROCEDURE IF EXISTS schema_change; DELIMITER // CREATE PROCEDURE schema_change() BEGI ...

  8. WPF学习之路(十二)控件(Range控件)

    ProgressBar 进度条,主要属性:Minimum\Maximun\Value, IsIndeterminate为True时,进度条会循环运转 <Grid> <Grid.Row ...

  9. jquery.serialize() 函数详解

    jQuery - serialize() 方法 W3School给出的定义与用法: serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. 您可以选择一个或多个表单元素(比如 i ...

  10. Java内存泄露简述

    Java的一个最显著的优势是内存管理.你只需要简单的创建对象而不需要负责释放空间,因为Java的垃圾回收器会负责内存的回收.然而,情况并不是这样简单,内存泄露还是经常会在Java应用程序中出现. 本篇 ...