print.c

来自「linux下的printf函数实现」· C语言 代码 · 共 87 行

C
87
字号
#include <stdio.h>#include <stdlib.h>#include "mystring.h"int _printf(const char *fmt, ...){	int *stack = (int *)&fmt;	char *str;	str = (char *)malloc(sizeof(char) * MAX_LEN);	if(!str)		return -1;	char *buf = (char *)malloc(sizeof(char) * MAX_LEN);	if(!buf)		return -1;	char *pcur = buf;		while(*fmt)	{		if(*fmt == '%')		{			switch(*(fmt + 1))			{				case '%':					*pcur++ = '%';					fmt += 2;					break;				case 'c':					*pcur++ = *(++stack);					fmt += 2;					break;				case 'd':					str = int_char(*(++stack));					while(*str)						*pcur++ = *str++;					fmt += 2;					break;				case 's':					istrcpy(str, (char *)*(++stack));					while(*str)						*pcur++ = *str++;					fmt += 2;					break;				case 'p':					str = uint_hex(*(++stack));					fmt += 2;					*pcur++ = '0';					*pcur++ = 'x';					while(*str)						*pcur++ = *str++;					break;				default:					*pcur++ = *fmt++;			}		}		else			*pcur++ = *fmt++;	}	*pcur = '\0';	while(*buf)		putchar(*buf++);	return 1;}int main(){	int i;	char *str = "STRING";	char *str2 = "new printf";	int a[10000] = {1, 2, 3};	_printf("_printf:\n");	_printf("%dHel%slo%c, i%%Linux%d, %c, %s, %p\n", 7555555, str2, 'h', 0, 'A', str, &str);	_printf("printf:\n");	printf("%dHel%slo%c, i%%Linux%d, %c, %s, %p\n", 7555555, str2, 'h', 0, 'A', str, &str);	for(i = 0; i < 3; i++)	{		printf("a[%d] = %d\n", i, a[i]);		_printf("a[%d] = %d\n", i, a[i]);	}	return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?