2016-06-19 63 views
0

我試圖通過一個NSString和args的名單給printf但是編譯器是不滿意的NSString不是恆定的如何將NSString傳遞給調用printf的函數?

我想有這樣的功能:

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

是有一種方法來標記參數NSString的方式,它使我想要做的「安全」?

編輯:我試過聲明參數爲常量NSString *,但那也沒有工作。

+0

試試'printf(format.UTF8String,args);'。 – Avi

+1

@Avi如果格式化字符串中包含'%@'序列,則會失敗。 – bbum

+0

那不是因爲'printf()'的限制嗎?換句話說,這不是與OP的方法無關的問題嗎? – Avi

回答

1

您需要使用NSStringstringWithFormat:arguments:創建完全格式化的NSString對象,然後通過printf寫入該對象的內容。

由於它已完全格式化,因此您可以直接通過fwrite()將其直接轉儲至stdout或使用NSFileHandle

相關問題