C语言自定义printf
时间: 2023-09-22 22:07:03 浏览: 88
在C语言中,我们可以使用自定义的printf函数来输出格式化字符串。这个自定义的printf函数可以接受任意数量的参数,并且可以根据用户提供的格式字符串来输出不同的内容。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdarg.h>
void my_printf(const char *format, ...)
{
va_list arg_list;
va_start(arg_list, format);
while (*format != '\0') {
if (*format == '%') {
format++;
switch(*format) {
case 'd':
printf("%d", va_arg(arg_list, int));
break;
case 'f':
printf("%f", va_arg(arg_list, double));
break;
case 's':
printf("%s", va_arg(arg_list, char *));
break;
default:
printf("Unknown format specifier");
break;
}
} else {
putchar(*format);
}
format++;
}
va_end(arg_list);
}
int main()
{
int i = 42;
double d = 3.14;
char *s = "Hello, world!";
my_printf("i = %d, d = %f, s = %s\n", i, d, s);
return 0;
}
```
在上面的代码中,我们定义了一个名为my_printf的函数,它使用了可变参数列表和va_start、va_arg、va_end这三个宏。在函数中,我们遍历了格式字符串中的每一个字符,如果遇到了%字符,那么就根据下一个字符来判断应该输出哪种类型的参数,并且使用va_arg来获取参数的值。最后,我们使用printf来输出格式化的结果。
在主函数中,我们使用了自定义的my_printf函数来输出一些变量的值。当我们编译并运行这个程序时,我们会得到如下的输出:
```
i = 42, d = 3.140000, s = Hello, world!
```
这个输出和使用标准的printf函数输出的结果是一样的。
阅读全文