我有一个我在iOS Objective-C程序中使用的C库。我的C库的一个功能是读入并处理文件中的数据。目前该功能看起来像这样
internalType* parseFile(const char* filename);
在iOS上传递一个char *作为文件名这样安全吗?或者我用unicode拍摄自己的脚?这里有首选做法吗?
答案 0 :(得分:3)
可能是UTF-8。为安全起见,您应使用CFURLGetFileSystemRepresentation
表示网址,-[NSString fileSystemRepresentation]
表示路径。
答案 1 :(得分:2)
是的... const char *
应该适用于C事物,特别是当它们与您可能调用的C函数匹配时,例如fopen
。
如果你的文件可能有古怪的非Ascii文件名,那么所有的赌注都会被取消。 :-)使用NSURL
或NSString
个对象的Objective C调用会更安全。