2013-02-27 71 views
1

我在d:驅動器中創建了一個名爲abc的文本文件。我無法打開它。請告訴我該怎麼做。我無法打開文件c

#include<stdio.h> 
#include<conio.h> 
#include<stdlib.h> 
void main() 
{ 
    FILE *fp; 
    clrscr(); 
    fp = fopen("D:/abc.txt","r"); 
    if(fp == NULL) 
    { 
     printf("\nCannot open"); 
     getch(); 
     exit(1); 
    } 
    fclose(fp); 
    getch(); 
} 
+1

檢查'errno'或使用'GetLastError' – 2013-02-27 13:43:44

+0

1)conio.h是一個非標準的頭文件。 2)main()應該返回int 3)MS-dos使用反斜槓而不是斜槓。 4)診斷輸出應該發送到stderr,5)並向它添加一個\ n將使其可見。 – wildplasser 2013-02-27 13:45:24

+0

你需要在你的平臺(OS)和編譯器上更具體。我剛剛在Windows 7上使用Visual Studio進行了驗證,並且它也適用於'/'(即使這也是我的第一個想法)。你確定該文件存在並且可讀嗎? – 2013-02-27 13:48:18

回答

1

下一次,嘗試使用perror()函數使錯誤更具體。 Perror()將解釋錯誤代碼,這將幫助您浪費更少的時間,試圖找出錯誤的類型。

添加本在你的代碼...

if(fp == NULL) 
{ 
perror(fp); 
} 

上運行我得到了PERROR消息

沒有這樣的文件或目錄。 (因爲我跑的程序,並試圖讀取文件,而無需先創建它)

看,如果這是同樣的問題,你的情況

+0

我正在使用dosbox。我認爲這可能是我的文件在同一個文件夾(bin)中打開而不是在另一個文件夾中打開的原因。 – rippy 2013-02-27 14:28:54

+0

它也給出錯誤沒有這樣的文件或目錄。但在使用dir命令的cmd中,它顯示文件(abc.txt)。 – rippy 2013-02-27 14:30:22

+2

是的,可能存在D中的文件:\ 但是D:\是否可以訪問DosBOX? 我不知道那個... 因此,而不是打開「D:\\ abc.txt」,打開「abc.txt」... 該文件將被讀取在與可執行文件相同的目錄中。 但是在閱讀之前,請先創建一個文件 – 2013-02-27 14:39:47

5

你有一個錯字,試

fp = fopen("D:\\abc.txt","r"); 

代替。

或者,如果該文件是在同一文件夾中的程序:

fp = fopen("abc.txt","r"); 
+0

我試過了,仍然沒有工作 – rippy 2013-02-27 13:46:05

+1

在哪個平臺上以及在哪個編譯器上? MS-Windows也接受'/' – 2013-02-27 13:46:47

+0

它適用於相同的文件夾,但不適用於不同的文件夾。 – rippy 2013-02-27 13:48:01

4

正確的路徑,它應該是「D:\\abc.txt"

2
fp = fopen("D:/abc.txt","r"); 

應該

fp = fopen("D:\\abc.txt","r"); 

在Windows中使用\而不是在Windows中使用/,並使用額外的\轉義序列。

編輯

當你評論別人的答案是fp = fopen("D:\\abc.txt","r");也沒有工作,然後檢查什麼名字實際上。你可能錯誤地給出了錯誤的名字,檢查你是否有這樣的錯誤。

(1)打開命令提示符
(2)使用DIR命令文件的打印名稱:

c:\Users\name> D: 
D:\> DIR 
Volume in drive D is FUN BOX 
Volume Serial Number is B48A-3CE7 

Directory of d:\ 

27-02-2013 19:23     0 abc.txt.txt 
26-02-2013 22:05 <DIR>   BOLLYWOOD MOVIES 
27-02-2013 19:31     0 x 
      2 File(s)    0 bytes 
      1 Dir(s) 11,138,654,208 bytes free 

文件名是abc.txt.txt但是當你看到這個文件夾中的分機沒有出現和文件名看起來abc.txt

我是Linux用戶,我通常在Windows中犯這個錯誤。這就是爲什麼。可能會幫助你!

+0

我試過了。在我的電腦上顯示abc.txt – rippy 2013-02-27 14:10:46

+0

@rippy仍然是'fp = fopen(「D:\\ abc.txt」,「r」);'不工作? – 2013-02-27 14:13:01

+0

nope仍然不起作用 – rippy 2013-02-27 14:15:11

3

你的文件路徑看起來有點奇怪。將其更改爲

fp = fopen("D:\\abc.txt","r"); 

這可能有效。

除此之外,包括<errno.h>並檢查它是否失敗。

+0

嘗試過,但仍然不起作用 – rippy 2013-02-27 13:51:40

+0

執行'#include ',當'fp == NULL'檢查'errno'中的值。請參閱[這裏](http://msdn.microsoft.com/en-us/library/windows/desktop/ms737828(v = vs.85).aspx) – 2013-02-27 13:54:02

1

如果您正在使用TURBOC努力把該文件TC的BIN目錄。 並指定路徑爲fp = fopen(「abc.txt」,「r」);而不是任何其他備用路徑。