读书人

[]文件复制有关问题

发布时间: 2012-05-31 12:19:24 作者: rapoo

[求助]文件复制问题。
文件复制的时候,发现只要源文件最后以一个空行结束,最后目标文件必定要比源文件多1行空行,如果文件不是以回车空行结尾,那么复制是正常的。求高人解答!并告知解决方法!

C/C++ code
#include <stdio.h>int main(void) {  FILE* fp1=fopen("src.txt","r");  if(fp1==NULL) {    printf("open file failed\n");  }  FILE* fp2=fopen("des.txt","w");  if(fp2==NULL) {    printf("open file failed\n");  }  char buf[1024];  long pos;   while(fread(&buf,sizeof(buf),1,fp1)) {    pos=ftell(fp1);   fwrite(&buf,sizeof(buf),1,fp2);  }  if(feof(fp1)) {    fseek(fp1,pos,SEEK_SET);    char temp;    while(!feof(fp1)) {          fread(&temp,sizeof(char),1,fp1);      fwrite(&temp,sizeof(char),1,fp2);     }    }else {    printf("write file failed\n");  }  return 0;}


[解决办法]
WINDOWS下写入回车时会自动加入换行~所以如果你写入回车换行符\r\n,那就变成了\r\n\n~所以就换成了两行,暂时我也没找到方法解决……你可以手动判断回车换行然后只写入回车
[解决办法]
原来复制一个文件都让楼主费心了.

while (fread() == 1) {
fwrite();
}
[解决办法]
char buf[1024];
把这个buf初始化一下:
char buf[1024] = "";

这个问题我原来也遇到过,还想着看看源代码来了解下是怎么回事。

希望红星们有时间能一起看一下。

[解决办法]
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

system("copy \"源文件全路径名\" \"目的文件全路径名\"");
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

读书人网 >C语言

热点推荐