一个简单的复制文件的程序出错

Suagr 2012-12-11 09:45:31
写了个C库函数的文件复制的程序,但是不成功。没有将文件中的数据复制过去。
#include <stdio.h>

#define BUFFER_SIZE 1024

int main(int argc, char *argv[])
{
FILE *from_fp, *to_fp;
int bytes_read, bytes_write;
char *ptr;
char buffer[BUFFER_SIZE];

if(argc != 3) //参数包括源文件名与目标文件名
{
printf("Input failed!\n");
return 1;
}

if( (from_fp = fopen(argv[1],"r")) == NULL ) //以只读方式打开源文件名
{
printf("File is not exist\n");
return 1;
}

if((to_fp = fopen(argv[2],"w+")) == NULL) //打开第二个文件
{
printf("Open file failed!\n");
return 1;
}

while(bytes_read = fread(buffer, BUFFER_SIZE, 1, from_fp)) //读取BUFFSIZE大小字节
{
if(bytes_read == -1) //读取出错
break;
if(bytes_read > 0) //读取有效数据
{
ptr = buffer;
while(bytes_write = fwrite(ptr, bytes_read, 1, to_fp)) //写数据到目标文件
{
if(bytes_write == -1)
break;
else if(bytes_write == bytes_read) //写完
break;
else if(bytes_write > 0) //未写完
{
ptr += bytes_write;
bytes_read -= bytes_write;
}
}
if(bytes_write == -1) //写错误
break;
}
}

fclose(from_fp);
fclose(to_fp);

return 0;
}


我执行./a.out 123.txt 456.txt。其中while(fread = ...)这一行用GDB调试时发现返回的值是0,但其实我的123.txt文件中是有数据的,不知道为什么会出现这种错误,希望高手看见了解答下。
...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2012-12-11
  • 打赏
  • 举报
回复
Suagr 2012-12-11
  • 打赏
  • 举报
回复
自己知道为什么了,对fread理解错误了,结贴了。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧