簡體   English   中英

使用絕對路徑打開文件

[英]Opening a file using absolute path

我正在嘗試使用絕對路徑打開文件。 我目前正在Windows中執行此操作,但在Unix環境中也需要使用此功能。

路徑使用如下所示的環境變量組成。

char *dataPath = getenv ("DATA");
strcat(dataPath, "/index");
char indexPath[255] = {0};
strcat(indexPath, dataPath);
strcat(indexPath, "/index.tbl");
printf("Path: %s\n", indexPath);
ip = fopen(indexPath, "r");

該代碼打印出C:\\ Data / index / index.tbl,但是應用程序無法打開文件。

我究竟做錯了什么?

這是不正確的:

char *dataPath = getenv ("DATA");
strcat(dataPath, "/index"); 

並且可能會覆蓋流程環境部分的一部分。 來自man getenv

通常實現的方法是,getenv()返回指向環境列表中字符串的指針。 調用者必須注意不要修改此字符串,因為這會改變進程的環境。

您需要分配足夠大的緩沖區以包含完整路徑,並復制到getenv("DATA") ,然后復制到strcat()sprintf()

const char* dataPath = getenv("DATA");
char* fullPath = 0;
if (dataPath)
{
    /* 6 for "/index" and 1 for terminating null character. */
    fullPath = malloc(strlen(dataPath) + 6 + 1);
    if (fullPath)
    {
        sprintf(fullPath, "%s/index", dataPath);

        free(fullPath);
    }
}

暫無
暫無

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

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