帮助C printf功能

时间:2011-05-15 14:11:23

标签: objective-c c printf nslog

我正在尝试复制NSLog,但开头没有所有不必要的日期。我尝试了以下c函数(我自己制作),但它不会记录任何其他不是NSStrings的值。请问你能告诉我怎样才能记录任何价值?

static void echo(NSString *fmt, ...) {
    printf("<<<<<<<%s>>>>>>>", [fmt UTF8String]);
}

1 个答案:

答案 0 :(得分:1)

要在C中使用可变参数列表,您需要使用编译器附带的stdarg.h头文件中定义的一些宏。

here is a detailed explanation of how to write your own printf

如果您只想将参数传递给真正的printf而无需进一步操作,则可以使用printf的vfprintf变体,但需要单独扩展fmt参数:

static void echo(NSString *fmt, ...)
{
    va_list args;
    NSString *logfmt = [NSString stringWithFormat: @"<<<<<<<%s>>>>>>>", [fmt UTF8String]];
    va_start (args, fmt);
    vfprintf( stdout, [logfmt UTF8String], args );
    va_end (args);
    [logfmt release];
}