gpt4 book ai didi

c - 读取文件并将其反转为另一个文件?

转载 作者:太空宇宙 更新时间:2023-11-04 06:31:31 24 4
gpt4 key购买 nike

我有这段代码,但每次我尝试运行它时,它都会删除源文件而不提供任何输出,那么我该如何解决我的问题?

注意问题是问我这个:

编写一个程序,从命令行获取两个文件名,并将第一个文件的内容反向复制到第二个文件中,假设它能够打开第一个文件进行读取,第二个文件一个用于写作。如果它不能打开第一个文件进行读取,则它不能创建或修改(视情况而定)第二个文件。这个程序必须使用底层函数

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

int main(int argc, char *argv[])
{
int source, dest, n;
char buf;
int filesize;
int i;


if (argc != 3)
{
fprintf(stderr, "usage %s <source> <dest>\n", argv[0]);
exit(-1);
}

在这个标准中,我尝试使用以下格式:open("outf", O_WRONLY | O_CREAT | O_TRUNC, 0666)

   if ((source = open(argv[1],O_WRONLY | O_CREAT | O_TRUNC, 0666)) < 0)
{ //read permission for user on source

fprintf(stderr, "can't open source\n");
exit(-1);
}


if ((dest = creat(argv[2], 0666)) < 0)
{ //rwx permission for user on dest

fprintf(stderr, "can't create dest");

exit(-1);
}

filesize = lseek(source, (off_t) 0, SEEK_END); //filesize is lastby +offset

printf("Source file size is %d\n", filesize);


for (i = filesize - 1; i >= 0; i--)
{ //read byte by byte from end

lseek(source, (off_t) i, SEEK_SET);


n = read(source, &buf, 1);


if (n != 1)
{

fprintf(stderr, "can't read 1 byte\n");
exit(-1);
}

n = write(dest, &buf, 1);

if (n != 1)
{
fprintf(stderr, "can't write 1 byte\n");

exit(-1);
}


}

write(STDOUT_FILENO, "DONE\n", 5);

close(source);

close(dest);

return 0;
}

谢谢

最佳答案

很抱歉我的粗鲁,但你有没有读过你传递给第一次公开电话 session 的选项? O_CREAT | O_TRUNC?

您认为这些选项有什么作用?这些选项导致您的源文件被删除。

关于c - 读取文件并将其反转为另一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035822/

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