模拟实现printf函数,可变参数列表实例
2017-11-15 23:19
495 查看
首先可通过CSDN查看printf函数原型等信息
实现功能:
即格式化输出并打印至标准输出流。
函数原型:
返回值:
即返回当前实际输出的个数(整形)。
参数:
由函数原型可知,可通过可变参数列表实现此函数,同时可看出有多少%就有多少参数,每个参数的类型由%后的字符决定。
至此问题便简单化了,只需分析以下两点便可写出函数:
1.分析其中%的个数,分析其内容
2.%后的格式控制与%紧密相连
具体代码如下:
实现功能:
Print formatted output to the standard output stream.
即格式化输出并打印至标准输出流。
函数原型:
int printf( const char *format [, argument]... );
返回值:
Each of these functions returns the number of characters printed, or a negative value if an error occurs.
即返回当前实际输出的个数(整形)。
参数:
format //格式 Format control //格式控制 argument //参数 Optional arguments //可选参数
由函数原型可知,可通过可变参数列表实现此函数,同时可看出有多少%就有多少参数,每个参数的类型由%后的字符决定。
至此问题便简单化了,只需分析以下两点便可写出函数:
1.分析其中%的个数,分析其内容
2.%后的格式控制与%紧密相连
具体代码如下:
#include <stdio.h> #include <windows.h> #include <stdarg.h> #include <assert.h> void printd(int n)//把整形按字符型输出 { if (n < 0) { putchar('-'); } if (n) { printd(n / 10); putchar(n % 10 + '0'); } } void my_printf(char* format, ...) { va_list arg; va_start(arg, format); while (*format) { if (*format == '%') //判断是否是% { format++; switch (*format) { case 's': //输出字符串 { char *ch = va_arg(arg, char*); while (*ch) { putchar(*ch++); } break; } case 'c':putchar(va_arg(arg, char)); //输出字符 break; case 'd': printd(va_arg(arg, int)); //输出整形 break; case '%':putchar('%'); //输出% break; default: puts("format error!\n"); return; } format++; } else if (*format == '\\') { format++; if (*format == 'n') { puts("\n"); //输出\n } } else { putchar(*format); format++; } } va_end(arg); } int main() { my_printf("%s %c%c%c %d\n", "hello", 'b', 'i', 't', 100); system("pause"); return 0; }
相关文章推荐
- 用可变参数列表模拟实现printf函数
- 用可变参数列表模拟实现printf函数
- C语言程序-可变参数(3)模拟实现printf函数
- 模拟printf函数,//print("val:s ccccc\n","hello", 'w,'o','r','l','d'); //val:hello world(可变参数列表)
- [C语言]可变参数列表和简单模拟实现printf
- 模拟实现printf函数(可变参数)
- 创建函数利用可变参数列表的形式模拟实现printf的功能
- 【C语言】模拟实现printf函数(可变参数)
- C语言可变参数列表详述及实现printf函数
- 奇特的可变参数列表实现print函数
- 用可变参数实现printf函数
- c语言,可变参数列表实现任意个数求平均值
- C自定义函数的可变参数列表实现 Windows APIS目录遍历程序 [李园7舍_404]
- 利用可变参数列表简单实现printf函数的功能
- 【C/C++】利用可变参数模拟实现printf
- C语言之利用可变参数列表实现简易的printf
- 可变参数列表详解(内附求平均数和实现简单的printf)
- 可变参数列表的实现
- C语言实现printf函数,即参数可变函数原理
- 可变参数列表函数实现