C语言打开文件失败,返回NULL,但明明文件存在,和exe文件放在一个文件夹下,这是为什么?跪求各

C语言打开文件失败,返回NULL,但明明文件存在,和exe文件放在一个文件夹下,这是为什么?跪求各位指教!

应该就是相对路径的问题,改成据对路径就可以
绝对路径:是从盘符开始的路径,形如
C:\windows\system32\cmd.exe
相对路径:是从当前路径开始的路径,假如当前路径为C:\windows
要描述上述路径,只需输入
system32\cmd.exe
实际上,严格的相对路径写法应为
.\system32\cmd.exe
其中,.表示当前路径,在通道情况下可以省略,只有在特殊的情况下不能省略。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-04-09
同 exe 在同一文件夹,则只需要写文件名,可略去路径。例如:
FILE *fp;
if ( (fp=fopen("a.txt","r")) == NULL) {
printf("open error!\n");
exit(0);
};
注意,文件存在,没有别的软件在使用它。
绝对路径写法, 用双斜杠代替单斜杠,例如: fopen( “D:\\user\\wang\\prog\\a.txt","r") .....
路径里不含空格,不含中文。追问

我是在D:\\data.txt

这么写运行的时候奔溃了

但是改成D:\\data.txt\\能运行,但是返回NULL

追答

写4道杠试试:

if ( (fp=fopen("D:\\\\data.txt","r")) == NULL) {
printf("open error!\n");
exit(0);
};

本回答被提问者和网友采纳
第2个回答  2015-05-12
应该就是相对路径的问题,改成据对路径就可以

绝对路径:是从盘符开始的路径,形如
C:\windows\system32\cmd.exe
相对路径:是从当前路径开始的路径,假如当前路径为C:\windows
要描述上述路径,只需输入
system32\cmd.exe
实际上,严格的相对路径写法应为
.\system32\cmd.exe
其中,.表示当前路径,在通道情况下可以省略,只有在特殊的情况下不能省略。
假如当前路径为c:\program files
要调用上述命令,则需要输入
..\windows\system32\cmd.exe
其中,..为父目录。
当前路径如果为c:\program files\common files
则需要输入
..\..\windows\system32\cmd.exe
第3个回答  2015-05-12
地址写对了吗?名字写对了吗?追问

对的啊

第4个回答  2015-05-12
代码贴上来再说,可能性很多,不会是路径中没用\\表示\吧?
相似回答