我这里有个文件复制的 函数 用的dev-cpp 却是无法打开 老是 this file can not open
#include <stdio.h>
void filecopy(FILE*in,FILE*out);
int main()
{
FILE *in;
FILE *out;
if((in=fopen("d1.dat","r"))==NULL)
{
printf("this file can not open");
exit(0);
}
if((out=fopen("d2.dat","w"))==NULL)
{
printf("this file can not open");
exit(0);
}
filecopy(in,out);
fclose(in);
fclose(out);
return 0;
}
void filecopy(FILE*in,FILE*out)
{
char ch;
ch=fgetc(in);
fputc(ch,out);
}
----------------解决方案--------------------------------------------------------
这种问题我也出现过,这个跟你用的编译器有关,我开始在Turbo C 里怎么都编译不过。但后来到Visual C++ 里一下就通过了
----------------解决方案--------------------------------------------------------
前提是d1.dat这个文件要存在哦
[此贴子已经被作者于2007-11-8 12:56:21编辑过]
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h> /* exit() */
void filecopy(FILE*in, FILE*out);
int main()
{
FILE *in;
FILE *out;
if((in=fopen("d1.dat","r"))==NULL) /* 这个模式下,d1.dat 必须存在 */
{
printf("this file can not open");
exit(0);
}
if((out=fopen("d2.dat","w"))==NULL)
{
printf("this file can not open");
exit(0);
}
filecopy(in,out);
fclose(in);
fclose(out);
return 0;
}
void filecopy(FILE*in,FILE*out) /* 这个函数只复制一个字符 */
{
char ch;
ch = fgetc(in); /* 从in,读取一个字符 */
fputc(ch, out); /* 输出一个字符到out */
}
/* 你的程序可以完全通过编译,但最好加上头文件<stdlib.h> */
/* d1.dat 必须存在(dat 是扩展名,最好让系统显示扩展名) */
[此贴子已经被作者于2007-11-8 13:23:56编辑过]
----------------解决方案--------------------------------------------------------
我都改了 可是 还是不行的 我用的dev-cpp 谢谢了 你讲的很详细 真的很感谢
----------------解决方案--------------------------------------------------------
我都改了 可是 还是不行的 我用的dev-cpp 谢谢了 你讲的很详细 真的很感谢
我用的也是 DEV-C++ 我可以
d1.dat 不存在吧。(你看看 d1.dat 存在吗? 扩展名 d1.dat)
fopen() 接受两个参数,第一个是文件名字符串,第二个是打开方式
如果没有成功打开文件,fopen() 函数返回 NULL,
否则返回 FILE 指针
//--------------------------------------------------------------------//
// 表 13.1 fopen()函数的模式字符串 //
//--------------------------------------------------------------------//
// 模式字符串 | 意义 //
//--------------------------------------------------------------------//
// "r" | 打开一个文本文件,可以读取文件 //
//--------------------------------------------------------------------//
// "w" | 打开一个文本文件,可以写入文件,先将文件的长度截 //
// | 为零。如果该文件不存在则先创建之 //
//--------------------------------------------------------------------//
// "a" | 打开一个文本文件,可以写入文件,向已有文件的结尾 //
// | 追加内容,如果该文件不存在则先创建之 //
//--------------------------------------------------------------------//
// "r+" | 打开一个文本文件,可以进行更新(读取和写入) //
//--------------------------------------------------------------------//
// "w+" | 打开一个文本文件,可以进行更新(读取和写入),如 //
// | 果该文件存在则首先将其长度截为零;如果不存在则先 //
// | 创建之 //
//--------------------------------------------------------------------//
// "a+" | 打开一个文本文件,可以进行更新(读取和写入),向 //
// | 已有文件的尾部追加内容,如果该文件不存在则先创建 //
// | 之;可以读取整个文件,但写入时只能追加内容 //
//--------------------------------------------------------------------//
// "rb", "wb", | 与前面的模式相似,只是使用二进制模式而非文本模式 //
// "ab", "r+b", | 打开文件 //
// "w+b", "a+b", | //
// "rb+", "wb+", | //
// "ab+" | //
//--------------------------------------------------------------------//
[此贴子已经被作者于2007-11-8 17:35:17编辑过]
----------------解决方案--------------------------------------------------------
弄好了 谢了啊
----------------解决方案--------------------------------------------------------