什么是的fopen未能打开文件
我有下面的代码,我试图打开一个文本文件的原因。什么是的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