用C语言实现printf的函数实现不适用sprintf
时间: 2023-05-26 14:05:25 浏览: 95
以下是用C语言实现printf的函数实现的示例代码:
```c
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
void myprintf(char *format, ...)
{
va_list args;
va_start(args, format);
int i = 0;
while (format[i] != '\0') {
if (format[i] == '%') {
i++;
switch (format[i]) {
case 'd':
printf("%d", va_arg(args, int));
break;
case 's':
printf("%s", va_arg(args, char *));
break;
default:
printf("Invalid format specifier!");
exit(EXIT_FAILURE);
}
} else {
putchar(format[i]);
}
i++;
}
va_end(args);
}
```
使用方式和printf函数一样,例如:
```c
int num = 123;
char str[] = "hello";
myprintf("num = %d, str = %s\n", num, str);
```
输出结果为:
```
num = 123, str = hello
```
该示例代码可以处理%d和%s格式说明符,其他格式说明符可以根据需求自行添加。需要注意的是,在使用可变参数函数时,一定要记得用va_start和va_end来进行初始化和清理工作。
阅读全文