[求助]文件复制问题。
文件复制的时候,发现只要源文件最后以一个空行结束,最后目标文件必定要比源文件多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++)、架构……