【发布时间】:2016-01-31 21:49:53
【问题描述】:
我编写了以下代码来将一个文件复制到另一个文件。尽管代码有效,但代码仍会打印两条错误消息。为什么是这样 ?我是 Unix 和 C 编程的完全初学者(虽然我以前使用过 C++),所以任何尽可能详细的帮助都会很棒。谢谢!
int main(int argc, char *argv[])
{
int n;
char buf[4096];
while ((n=read( open(argv[1], O_RDONLY) , buf, 4096))>0)
{
if (write(creat(argv[2], S_IREAD | S_IWRITE ), buf, n)!=n)
printf("Error writing to file.\n");
}
if (n<0)
printf("Error reading from file.\n");
exit(0);
}
【问题讨论】:
-
您在每次循环迭代时都重新打开这两个文件。
-
“代码有效” 但您是否真的检查过目标文件与源文件的内容是否相同?请使用文件大小 > 4096 进行测试。
-
您认为从哪里开始读取新打开的文件?如果文件已经存在,
create 函数会做什么? -
read()和write()返回ssize_t,而不是int。它们不是一回事。 -
@WeatherVane 是的,我运行代码后,目的地和原始文件的内容一样。
标签: c unix cp file-copying