开发者社区> 问答> 正文

使用read()将文件内容写入屏幕以及C中其他文件的问题

1个

我正在尝试将文件的内容复制到另一个文件。我也想在屏幕上显示文件的内容,如果可能的话,我想使用系统调用(写)来完成所有这些操作。

这是我的代码

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

#define PERMS 0644

char *workfile = "file1.txt";
char *workfile2 = "file2.txt";
int main(int argc, char *argv[])
{
    int fd;
    int fd2;
    int fd3;
    ssize_t nread0;
    ssize_t nread;
    char buf[1024];
    char buf2[1024];
    ssize_t nread2;

    const char msg[] = "File 3 contains:";
    if ((fd= open(workfile, O_RDWR,PERMS)) == -1) {
        printf("Couldn't open %s\n", workfile);
        exit(1);
    }

    if ((fd2 = open(workfile2,O_RDWR,PERMS)) == -1) {
        printf("Couldn't open %s\n",workfile2);
        exit(1);
    }

    while (nread =read(fd,buf,1024)) {
        if (lseek(fd2,0,SEEK_END) < 0) return 1;
        if (write(fd,buf,nread) && write(1,buf,nread) < nread) {
            close(fd);
            close(fd2);
            return(-3);
        }
    }

    close(fd);
    if (nread ==-1) {
        return (-4);
    }
    return 0;
}

当我也尝试写入屏幕时,的内容file1不会复制到,file2但file1会写入屏幕。

我也尝试过在循环之外添加read和和其单独的缓冲区and 。writewhilessize_t

是什么导致此问题?

展开
收起
祖安文状元 2020-01-07 14:05:15 386 0
1 条回答
写回答
取消 提交回答
  • 在这行上,我认为您想fd2写入复制文件。

    另请注意,运算符优先<级比更高&&。在与<运算符比较之前,将写调用括在括号中以进行评估。

    if((write(fd2,buf,nread) && write(1,buf,nread)) < nread )
    
    2020-01-07 14:05:24
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载