各位高手!!C语言中为什么用fopen函数打开文件错了!我用的是DEV!求解

#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main()
{
FILE *fp1,*fp2;
char str1;
if((fp1 = fopen("E:\\编译原理\\datafile1.txt","r")) == NULL) // 打开并测试文件
{
cout<<"datafile1 cannot be opened "<<endl;
// exit(1);
}
if((fp2 = fopen("E:\\编译原理\\datafile2.txt","w")) == NULL) // 打开并测试文件
{
cout<<"datafile2 cannot be opened "<<endl;
exit(1);
}
while(!feof(fp1))
{
if((str1 = fgetc(fp1))&&(str1 != EOF))
fputc(str1,fp2);
else
;
}
fclose(fp1);
fclose(fp2);
system("pause");
return 0;
}
这是我的程序,程序目地是将一个文件里面的内容写到另外一个文件里面去!!

主要是下面这句,
if((fp1 = fopen("E:\\编译原理\\datafile1.txt","r")) == NULL) // 打开并测试文件
因为这是以读的方式打开,所以你的路径里确保要有E:\\编译原理\\datafile1.txt这个文件才行,否则出错。
第2个是以写的方式打开,会自动创建这个文件追问

那个文件夹里面既有那个以读方式打开的文件,也有以写方式打开的文件!!

追答

嗯,是啊,但是在打开文件前,以读方式打开("r")的文件要先存在啊,否则打开失败。
但是以写的方式("w")打开文件,如果文件不存在就会创建一个。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-10
我觉得可能是路径不对,你的程序和要操作的文件放在一起不代表这路径是对的
第2个回答  2012-05-08
你确定路径对吗?追问

这样跟你说吧!我那个程序和要操作的文件是放在一个文件夹里面的!昨天请一个同学给我调试一下,他成功的用C++的函数给我打开的文件,而fopen函数不行,他说可能是我的系统和这个函数有冲突所以才打不开的,并且这个函数我是照着书上输的

追答

首先,书上的东西就算它是对的,但有时会理解错误
书上的是没错,但是你的文件名错了,把你所定义的文件名的“.txt”去掉

追问

我刚试了一下!还是不行!不过,还是谢谢你!!

追答

你这样试一下:把if((fp2 = fopen("E:\\编译原理\\datafile2.txt","w")) == NULL) 放到前面,看创建的文件名是什么样的,然后仿照生成的文件名新建文件datafile1
另外由于没有#include 头文件,exit函数是没有定义的

相似回答