C语言:模拟实现printf函数——my_printf函数哦
2016-11-14 14:53
507 查看
#define _CRT_SECURE_NO_WARNINGS 10 #include<stdio.h> #include<stdarg.h> #include<stdlib.h> #include<assert.h> #include<string.h> //int printf( const char *format [, argument]... ); //模拟实现printf函数,可以实现my_printf(“s ccc”,“hello”,‘b’,‘i’,‘t’) char *int_str(int nums) { char str[32] = "0"; int i = 0; for (i = 31; i >= 0; i--) { str[i] = (nums & 1) + '0'; nums >>= 1; } printf("%s\n", str); } int my_printf(const char *format, ...) { assert(format); va_list arg_list; va_start(arg_list, format); int count = 0; const char *start = format; while (*start != '\0') { if (*start == '%') { start++; switch (*start) { case 's': { char *ret = va_arg(arg_list, char *); fputs(ret, stdout); count = count + strlen(ret); } break; case 'c': { char _c = va_arg(arg_list, char); putchar(_c); count++; } break; case 'd': { int _d = va_arg(arg_list, int); char buf[10]; _itoa(_d, buf,10); fputs(buf, stdout); count = count + strlen(buf); } break; case 'v': { int _dd = va_arg(arg_list, int); char *array = int_str(_dd); fputs(array, stdout); count = count + strlen(array); } break; } start++; continue; } putchar(*start); start++; count++; } va_end(arg_list); return count; } int main() { my_printf("%s %c%c%c", "hello", 'b', 'i', 't'); system("pause"); return 0; }
相关文章推荐
- C语言:模拟实现字符串中查找一个字符串my_strstr()函数
- 可变参数模拟printf()函数实现一个my_print()函数以及调用可变参数需注意的陷阱
- 【c语言】 模拟实现printf,要求功能: my_printf("dc\ts\ndc\ndc\ts!", ...)
- 模拟实现一个printf,函数可以实现my_printf("s ccc.","hello", 'n','i','h','a','o');//遇到s表示字符串
- 【c语言】 模拟实现printf,要求功能: my_printf("dc\ts\ndc\ndc\ts!", ...)
- 【面试题】C语言:模拟实现内存放置函数memset()
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) .
- 【c语言】模拟实现库函数的atof函数
- c语言不定参数与printf函数的实现
- c语言:模拟实现printf,要求功能:print("ccc\ts!",'b','i','t',"welcome to you");
- C语言:模拟实现printf,要求功能:print("ccc\ts!",'b','i','t',"welcome to y
- c语言之模拟实现求子串(strstr)函数
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) .
- 【C语言】模拟实现库函数srtcpy函数
- 【C语言】my _strlen函数功能的实现
- C语言模拟实现memcpy,memmove函数
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) . 分类: HI3531 arm-linux-Ubuntu 2013-12-16 14:19 438人阅读 评论(0) 收藏
- C语言 实现char * my_strcat(char * dest,char *src)函数
- C++实现C语言printf函数
- 【c语言】用可变参数列表实现一个简化的printf函数