C语言用变参函数和fprintf()实现ptintf打印函数
时间: 2024-09-20 13:09:49 浏览: 33
在C语言中,变参函数是一种可以接受任意数量或类型参数的函数。printf是一个标准库函数,用于格式化并打印输出到控制台或文件。如果你想通过变参函数实现类似于printf的功能,你可以创建一个自定义的函数,利用stdarg.h头文件提供的功能,如`va_list`, `va_start`, `va_arg`, 和 `va_end`。
下面是一个简单的例子,展示如何使用变参函数实现类似printf的打印:
```c
#include <stdio.h>
#include <stdarg.h>
// 定义printf风格的变参函数
void custom_printf(const char *format, ...) {
va_list args;
va_start(args, format); // 初始化va_list,指针从format后的第一个参数开始
int i = 0; // 临时变量,用于迭代va_list中的参数
while (*format != '\0') { // 遍历格式字符串直到遇到结束符
if (*format == '%') { // 如果找到%字符,说明有格式转换指示符
switch (format[1]) {
case 'd': // 整数
printf("%d", va_arg(args, int)); break;
case 's': // 字符串
printf("%s", va_arg(args, char*)); break;
// 添加其他类型的转换处理...
default:
printf("Unsupported type conversion\n");
break;
}
format += 2; // 跳过已处理的格式转换字符
} else {
printf("%c", *format); // 普通字符直接输出
format++; // 移动指针到下一个字符
}
}
va_end(args); // 结束va_list迭代
}
// 使用示例
int main() {
custom_printf("Hello, %s! Today is %d.\n", "world", 2023);
return 0;
}
```
阅读全文