簡體   English   中英

在Mac OS X中打開文件

[英]Opening a file in Mac OS X

我試圖在Mac OS X中使用C ++打開文本文件,但總是出現總線錯誤。

我不在乎將文件放在哪里。 我只需要閱讀它。 我的地址寫錯了嗎? 還是該總線錯誤還有其他原因?

FILE *dic;
dic = fopen("DICT","rb");

dic = fopen("./DICT","rb");

dic = fopen("~/DICT","rb");

dic = fopen("~//DICT","rb");

稍微澄清一下,我看到您的C代碼(不是C ++!)中的問題是fopen()返回NULL 您可以通過報告詳細的錯誤來檢查問題的實質:

if( (dic = fopen("DICT", "rb") == NULL ) {
    fprintf(stderr, "%s\n", perror("ERROR:"));
    exit(1);
}

如果fopen()無法在用戶的桌面上找到文件,並且您希望代碼在多個平台上都能工作,則可以定義一個函數來獲取用戶的桌面目錄,以便與fopen() 就像是

char* user_desktop(char* buf, size_t len)
{
    const char* const DESKTOP_DIR = 
#ifdef PC
    "C:\\Documents and Settings\\Pooya\\Desktop\\"
#elif defined(OSX)
    "/Users/Pooya/Desktop/"
#elif defined(LINUX)
    "/home/users/pooya/Desktop/"
// fail to compile if no OS specified ...
#endif
    return strncpy(buf, DESKTOP_DIR, len);
}

您可能想研究一種更健壯的方法來獲取每個操作系統的桌面路徑。 大多數操作系統都為此提供API,因此您的研究也是如此。 還有多種更健壯的方式來拆分各種平台的行為,您可以調查一下或就此提出不同的問題。 我只是想表達我的想法,即擁有一個函數,無論在哪個平台上編譯代碼,該函數都將返回適當的桌面路徑。

此代碼正確! 請注意可執行文件所在的目錄。 確保執行目錄與您期望的目錄不同(我想是.c文件的目錄,對嗎?)。

我相信您正在從IDE執行該應用程序。 這是Xcode中的通用代碼,它將exec安裝在項目文件所在的其他位置,無論您是否從IDE執行程序,執行程序時都會考慮該位置!

只需將您要讀取的文件移動到應用程序的位置,它將可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM