2012-11-17 91 views
4

我是C的完整noob,我想知道爲什麼如果我接受用戶輸入爲什麼它不會找到該文件,但是當我使用它進行硬編碼時:如何檢查文件是否存在於用戶輸入的C中

const char * fn = "/Users/james/Documents/test.rtf"; 

它似乎正常工作?

char text[100]; 
fputs("File location: ", stdout); 
fflush(stdout); 
fgets(text, sizeof text, stdin); 

FILE *fp = fopen(text,"r"); 
if(fp) { 
    printf("\nFile Exists"); 
    fclose(fp); 
} else { 
    printf("\nFiles doesn't exist"); 
} 

任何幫助都會很棒,或者只是指向某些在線來源,我明顯無法找到。 :)

回答

5

fgets讀取一行並保留最終換行符。你得把該關閉的

text[strlen(text) - 1] = '\0'; 

(當然這樣做的正確的錯誤檢查後。)

+0

布里爾謝謝你,我已經在其他地方見過,現在卻在一個稍微不同的上下文所以至少現在我知道了。我會在3分鐘內將你標記爲正確:) – James

0

您可以使用訪問()來檢查文件是否存在 要訪問你需要提供文件和模式的路徑。

訪問原型是 int access(const char * pathname,int mode);

如果文件存在,access()返回零。

欲瞭解更多信息,請訪問:http://linux.die.net/man/2/access

相關問題