printf函数的实现
来源:互联网 发布:淘宝分店怎么开 编辑:程序博客网 时间:2024/05/16 07:55
#include "stdio.h"
#include "assert.h"
#include"string.h"
#include"stdarg.h"
int my_print(char *format, ...)
{
assert(format);
va_list arg;//定义可变参数
va_start(arg, format);//使用可变参数
while (*format)
{
if (*format == '%')
{
format++;
switch (*format)
{
case'd':
{
int i = va_arg(arg, int);
puts(i);
break;
}
case'c':
{
char c = va_arg(arg, char);
put(c);
break;
}
case's':
{
char* s = va_arg(arg, char*);
puts(s);
break;
}
case'f':
{
float f = va_arg(arg, float);
put(f);
break;
}
default:
puts("format error!\n");
break;
}
}
else if (*format = '\\')
{
format++;
}
else
{
puts(*format);
format++;
}
}
va_end(arg);//结束使用可变参数
}
int main()
{
my_print("print: %c\n", 'c');
my_print("print %d\n", 123);
my_print("print: %f\n", 123.456);
my_print("print: %s\n", "test");
my_print("print: %%\n");
system("pause");
return 0;
}
#include "assert.h"
#include"string.h"
#include"stdarg.h"
int my_print(char *format, ...)
{
assert(format);
va_list arg;//定义可变参数
va_start(arg, format);//使用可变参数
while (*format)
{
if (*format == '%')
{
format++;
switch (*format)
{
case'd':
{
int i = va_arg(arg, int);
puts(i);
break;
}
case'c':
{
char c = va_arg(arg, char);
put(c);
break;
}
case's':
{
char* s = va_arg(arg, char*);
puts(s);
break;
}
case'f':
{
float f = va_arg(arg, float);
put(f);
break;
}
default:
puts("format error!\n");
break;
}
}
else if (*format = '\\')
{
format++;
}
else
{
puts(*format);
format++;
}
}
va_end(arg);//结束使用可变参数
}
int main()
{
my_print("print: %c\n", 'c');
my_print("print %d\n", 123);
my_print("print: %f\n", 123.456);
my_print("print: %s\n", "test");
my_print("print: %%\n");
system("pause");
return 0;
}
阅读全文
0 0
- printf 函数的实现 *
- printf函数的实现
- printf函数的实现
- 简单的printf函数实现
- printf 函数的实现原理
- 实现自己的printf函数
- printf 函数的实现原理
- 实现自己的printf函数
- printf 函数的实现原理
- printf函数的实现原理
- 实现自己的printf函数
- 实现简单的printf函数
- 实现自己的printf函数
- STM8L的printf函数实现
- c实现的printf函数
- printf谈可变参数函数的实现
- 实现自己的嵌入式printf函数
- printf函数实现的深入剖析
- 文本处理大杀器——sed
- 子线程中调用UpdateData(TRUE/FALSE)出现异常解决方法
- 浏览器工作原理(初步接触)
- 代码大全第二部分 (包含第四章)
- 欢迎使用CSDN-markdown编辑器
- printf函数的实现
- [MVVM]02-MVVMLight页面前后台消息和命令传递
- solve the version conflict of google test on ubuntu
- 893CRumor
- InnoDB的行锁
- spring boot No Identifier specified for entity的解决办法
- 【百度、腾讯、阿里等】+【JAVA开发实习生】+春招面试经验
- C与指针 7-9章
- Java将字符串转换为时间,支持多种格式