2013-11-27 17 views
-1

如何讀取和寫入不在bin目錄中的文件,該文件不在C驅動器中。
我寫了這個代碼
無法打開d:驅動器中的文件

fs=fopen("d:/source.txt","w"); 
if(fs==NULL) 
{ 
     puts("Unable to open file"); 
} 

它輸出「無法打開文件」。有人能幫助我嗎?

+2

使用['perror'(HTTP://en.cppreference。 com/w/c/io/perror)而不是打印錯誤,它應該更具體地告訴你什麼是錯誤的。 –

+1

我認爲你的斜線是倒退的。如果你用\\替換/(這樣它會被轉義)會發生什麼? – templatetypedef

+0

「C驅動器」表示這是一臺Windows機器。在Windows中,所有路徑都使用反斜槓書寫。但是由於C字符串中的反斜槓有特殊的含義,所以你必須編寫'\\'來得到一個。所以路徑字符串應該是'd:\\ source.txt'。 – Lundin

回答

0
FILE *fs= fopen("d:/source.txt","w"); 
if(fs==NULL) 
{ 
    printf("can't open"); 
} 
if (fs!=NULL) 
{ 
    fputs ("Opened successfully",fs); 
    fclose (fs); 
} 

確保source.txt文件存在並且不是隻讀的。我試過上面的代碼沒有得到任何錯誤。

0

有幾種可能的原因導致文件無法通過fopen()打開。

要獲取詳細的錯誤信息打印出來errno和/或致電perror()和/或strerror()例如像這樣:

#include <stdio.h> 
#include <string.h> 
#include <errno.h> 

int main(void) 
{ 
    char filename[] = "d:/source.txt"; 
    FILE * fs = fopen(filename,"w"); 
    if (NULL == fs) 
    { 
    perror("fopen() failed"); 
    fprintf(stderr, "Error #%d occurred when trying to open file '%s': %s.\n", 
     errno, 
     filename, 
     strerror(errno)); 
    } 

    ... 

    return 0; 
}