如何将 NSString 传递给调用 printf 的函数?

Posted

技术标签:

【中文标题】如何将 NSString 传递给调用 printf 的函数?【英文标题】:How to pass an NSString to a function that calls printf? 【发布时间】:2016-06-19 02:47:11 【问题描述】:

我正在尝试将 NSString 和 args 列表传递给 printf,但编译器对 NSString 不是常量感到不满

我想要一个这样的功能:

+ (void)logFormat:(NSString *)format logArguments:(va_list)args 
    printf(format,args);

有没有办法标记参数 NSString 以使我正在尝试做的事情“安全”?

编辑:我尝试将参数声明为 const NSString * 但这也不起作用。

【问题讨论】:

试试printf(format.UTF8String, args); @Avi 如果格式字符串中包含 '%@' 序列,则会失败。 这不是因为printf() 的限制吗?换句话说,这不是与 OP 的方法无关的问题吗? 【参考方案1】:

您需要使用NSStringstringWithFormat:arguments: 创建一个完全格式化的NSString 对象,然后通过printf 写入该对象的内容。

由于它已完全格式化,您不妨直接通过fwrite() 将其转储到stdout 或使用NSFileHandle

【讨论】:

以上是关于如何将 NSString 传递给调用 printf 的函数?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将脚本传递给shell变量中的awk?

将 NSString 从 View 传递给另一个

如何将字符串转换为 NSData 以将其传递给 BLE 设备?

将格式说明符传递给宏中的printf

试图将 ViewController 中的字符串传递给 NSObject 中的字符串 .. 但它不起作用

我的Android进阶之旅如何传递android的log日志打印方法给到底层算法c代码去调用?