我有下面的代碼,我試圖打開一個文本文件的原因。什麼是的fopen未能打開文件
char frd[32]="word-list.txt";
FILE *rd=fopen(frd,"rb");
if(!rd)
std::cout<<"Coudn't open file\t"<<frd;
我使用的是vc 2010,該文件位於此項目的調試目錄中。 誰能告訴我爲什麼它無法打開文件?
我有下面的代碼,我試圖打開一個文本文件的原因。什麼是的fopen未能打開文件
char frd[32]="word-list.txt";
FILE *rd=fopen(frd,"rb");
if(!rd)
std::cout<<"Coudn't open file\t"<<frd;
我使用的是vc 2010,該文件位於此項目的調試目錄中。 誰能告訴我爲什麼它無法打開文件?
#include<stdio.h>
#include <errno.h>
int main()
{
errno = 0;
FILE *fb = fopen("/home/jeegar/filename","r");
if(fb==NULL)
printf("its null");
else
printf("working");
printf("Error %d \n", errno);
}
這樣,如果FOPEN得到失敗,那麼將設置錯誤編號,你可以在這裏找到這些錯誤號碼列表http://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html
問題不在於打開文件。 'if(rd)'被評估爲真,因此消息行被執行。我應該用「如果(RD = NULL)」如果fopen()函數獲取失敗了, – John 2011-12-26 08:12:01
它會返回NULL所以RD將是NULL現在在你的代碼已經編寫如果(!RD)不是如果(RD)意味着它將被執行時,rd將爲NULL,如果文件打開成功,那麼該消息將永遠不會打印..如果你想使用==,那麼你應該寫if(rd == NULL)noy if(rd = NULL) – 2011-12-26 08:17:23
是啊,你是對的。它是輸入錯誤 – John 2011-12-26 08:31:08
r Open for reading (existing file only) and rb Open for reading (existing file only) in binary mode
。確保你的工作目錄中有該文件。
我100%確定(據我所知)我有工作目錄中的文件。另外我試圖打開它沒有二進制模式,結果是一樣的。 – John 2011-12-26 07:59:43
看其在一個錯誤的情況下設置的errno變量。這是一個全球變量。已經有一段時間了,但可能包含errno.h,它會給你定義。
你可以做man fopen
- 它說Upon successful completion fopen() return a FILE pointer. Otherwise, NULL is returned and errno is set to indicate the error
。
請檢查在執行路徑或在你的程序中是否存在該文件,檢查errno
什麼文檔說對哥本哈根會議失敗的類型?應該有一些方法來找出答案。 – xaxxon 2011-12-26 07:56:11
文件是否存在(在執行路徑中)? – 2011-12-26 07:58:34
檢查文件和/或包含目錄的權限。 – prongs 2011-12-26 07:59:42