gpt4 book ai didi

c - 如何在 Linux 中用 C 写文件?

转载 作者:IT王子 更新时间:2023-10-28 23:57:02 26 4
gpt4 key购买 nike

我想重写 Linux 的“cp”命令。所以这个程序将像 #./a.out originalfile copiedfile 一样工作。我可以打开文件,创建新文件但不能写入新文件。什么都没写。可能是什么原因?

当前的C代码是:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc,char *aa[]){
int fd,fd1;
char buffer[100];

if(argc!=3){
printf("Usage : ./a.out <original> <copy> \n");
return -1;
}

fd=open(aa[1],O_RDONLY,S_IRUSR);
if(fd==-1){
printf("file not found.\n");
return -1;
}
fd1=open(aa[2],O_CREAT | O_WRONLY,S_IRUSR);
if(fd1!=-1){
printf("file is created.\n");
}
ssize_t n;
while(n=read(fd,buffer,50)){
write(fd1,buffer,n);
printf("..writing..\n");
}
close(fd);
close(fd1);
}

最佳答案

您需要将 read() 数据 write() 到新文件中:

ssize_t nrd;
int fd;
int fd1;

fd = open(aa[1], O_RDONLY);
fd1 = open(aa[2], O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
while (nrd = read(fd,buffer,50)) {
write(fd1,buffer,nrd);
}

close(fd);
close(fd1);

更新:添加了正确的打开...

顺便说一句,O_CREAT 可以进行或运算 (O_CREAT | O_WRONLY)。您实际上打开了太多文件句柄。只需打开一次。

关于c - 如何在 Linux 中用 C 写文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2008267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com