天天看點

在iOS系統中使用fopen函數

這些天在應用中用到openssl編解碼的時候遇到用fopen打開檔案拿不到FILE的情況,造成crash,最後得到解決,以下是記錄:

因為應用底層有部分代碼是C編寫的,在這裡要打開一個檔案來讀取資料,一開始在Objective-C中建立檔案的時候是用的NSURL,傳到C代碼中的時候使用[[url absoluteString] UTF8String],在fopen的時候拿到的fd是-1,沒有打開檔案。

追蹤代碼的時候發現,NSURL指向的檔案路徑是 file:///xxxx 這樣的格式,但如果是NSString指向的檔案路徑就是 /file/xxxx,在UNIX檔案系統中肯定前者是無法定位到一個檔案的,最後修改建立檔案并擷取檔案的方式為通過NSString來指向檔案,千萬不能使用NSURL

檔案放在Document和tmp下都不影響。

以上是解決這次問題的收獲,血的教訓啊,花了30分鐘才發現。希望對看到的朋友有幫助。