先看一段程序,其中myturboc是D盘中已经建立的目录,char2.txt是myturboc目录中已经建立的文件,
char2.txt中的内容是:asdfghjk
chat.txt是并不存在的文件
程序如下:
#include<stdio.h>
void my_copy(char *fname1,char *fname2)
{
FILE *fp1,*fp2;
if((fp1=fopen(fname1,”r”))==NULL)
{
printf(“file can not open!\n”);
exit(0);
}
if((fp2=fopen(fname2,”w”))==NULL)
{
printf(“file can not open!\n”);
exit(0);
}
while(!feof(fp1))
fputc(fgetc(fp1),fp2);
fclose(fp1);
fclose(fp2);
}
main()
{
my_copy(“d:\\myturboc\\char2.txt”,”d:\\chat.txt”);
}
问题:
程序执行后chat.txt的内容并不是预想中的asdfghjk而是asdfghjky(最后一个字符是y的头上加两点,这个字符在网页上无法显示只好用y代替)
这是为什么,y的头上加两点是什么字符,该不是文件结束标记吧。
有哪位朋友知道请不吝赐教,我在这里先谢谢了。
-
近期文章
近期评论
- coolker 发表在《打造最快的Hash表》
- struggle 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- diys 发表在《C语言编程宝典(王大刚) 1.1 C 语言的产生与发展》
文章归档
- 2022 年十月
- 2014 年一月
- 2013 年十二月
- 2012 年十一月
- 2012 年七月
- 2012 年六月
- 2012 年五月
- 2012 年四月
- 2012 年三月
- 2012 年二月
- 2011 年十二月
- 2011 年十月
- 2011 年九月
- 2011 年八月
- 2011 年七月
- 2011 年六月
- 2011 年五月
- 2011 年四月
- 2011 年三月
- 2011 年二月
- 2011 年一月
- 2010 年十二月
- 2010 年十一月
- 2010 年十月
- 2010 年九月
- 2010 年八月
- 2010 年七月
- 2010 年六月
- 2010 年五月
- 2010 年四月
- 2010 年三月
- 2010 年二月
- 2010 年一月
- 2009 年十二月
- 2009 年十一月
- 2009 年十月
- 2009 年九月
- 2009 年八月
- 2009 年七月
- 2009 年六月
- 2009 年五月
- 2009 年四月
- 2009 年三月
- 2009 年二月
- 2009 年一月
- 2008 年十二月
- 2008 年十一月
- 2008 年十月
- 2008 年九月
- 2008 年八月
- 2008 年七月
- 2008 年六月
- 2008 年五月
- 2008 年四月
- 2008 年三月
- 2008 年二月
- 2008 年一月
- 2007 年十二月
- 2007 年十一月
- 2007 年十月
- 2007 年九月
- 2007 年八月
- 2007 年七月
- 2007 年六月
- 2007 年三月
- 2007 年二月
- 2007 年一月
- 2006 年十二月
- 2006 年十一月
- 2006 年十月
- 2006 年九月
- 2006 年八月
- 2006 年七月
- 2006 年六月
- 2006 年五月
- 2006 年四月
- 2006 年三月
- 2006 年二月
- 2006 年一月
- 2005 年十二月
- 2005 年十一月
分类目录
功能
while(!feof(fp1))
fputc(fgetc(fp1),fp2);
这个循环就向 fp2 写了一个字节. 然后退出循环. 但是写的这个字节不是你想要的,结果就变成y的头上加两点的那种样子
解决方法如下
unsigned char cstr=fgetc(fp1);
while(!feof(fp1))
{
fputc(cstr,fp2);
cstr=fgetc(fp1);
}