C语言 复制文件

来源:百度知道 编辑:UC知道 时间:2024/05/25 15:23:18
以下程序在VC++、DEV C++和WIN-TC三个编译器编译,都能通过

但是
/******************----------------------------
在VC++运行时报错
“File: fgetc.c
Line: 41
Expression : stream != NULL”
/******************----------------------------
在DEV C++运行报错
“‘0x7c921010’指令引用的‘0x00000034’内存。该内存不能为‘read’。”
/******************----------------------------
在WIN-TC运行时正常,但是经过我测试
fgetc(srcFile) == EOF
也就是说仍然不能成功复制文件

可能是在fgetc(srcFile)时出问题,请大家帮忙看看。
///--------------------------------------------
程序如下:
#include <stdio.h>

int main(int argCount, char * argValue[])
{
FILE *srcFile = 0, *destFile = 0;
int ch = 0;

if (argCount != 3)
printf("Usage: %s src-file-name dest-file-name\n", argValue[0]);
else
if (srcFile = fopen(argValue[1],"r") == 0)
printf("Can not open source file \"%s\"!", argValue[1]);
else<

if (srcFile = fopen(argValue[1],"r") == 0) 中的
srcFile = fopen(argValue[1],"r") == 0
等价于
srcFile = (fopen(argValue[1],"r") == 0)
应该改成
(srcFile = fopen(argValue[1],"r") )== 0

同理if (destFile = fopen(argValue[2],"w") == 0)
应该成
if ((destFile = fopen(argValue[2],"w")) == 0)

同理
while (ch = fgetc(srcFile) != EOF) fputc(ch, destFile);中的
ch = fgetc(srcFile) != EOF
等价于
ch = (fgetc(srcFile) != EOF)
应该改成
(ch = fgetc(srcFile)) != EOF

用VC的话建议使用FastCopy程序的源代码,
详见:
http://www.pudn.com/search_db.asp?keyword=fastcopy&p=&search_type=code