【发布时间】:2018-08-19 15:03:18
【问题描述】:
我试图将文件中写入的内容复制到另一个文件(使用系统调用),但我的代码似乎不起作用。我首先尝试使用printf() 缓冲区进行打印,但它也不起作用。我的猜测是我读错了文件。
#define BUF_SIZE 200
int main(int argc, char *argv[]){
int entrada,salida,leidos;
char buffer[BUF_SIZE];
entrada = open(argv[1],O_RDONLY);
salida = creat(argv[2], 0644);
while( (leidos = read(entrada,buffer,BUF_SIZE)) > 0 ){
write(salida,buffer,leidos);
}
close(salida);
close(entrada);
return 0;
}
我的实现有什么问题?
【问题讨论】:
-
你应该从查看函数的返回值开始;打开/创建/读取/写入/关闭可能会在您的代码中静默失败
-
...特别是因为在 C++ 中,等效的文件复制是一条语句,不需要使用任何缓冲区或 while 循环。
-
@Biffen:因为它是一个格式良好(尽管有问题)的 C++ 程序。 OP 告诉我们他打算将其编写为 C++ 程序。
标签: c file system-calls