2301_80188743 2023-12-09 17:19 采纳率: 0%
浏览 2

c程序文件的读写错误,如何解决?

img


请各位看一下,为什么我这个write写的文件用这个read没法读取

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-09 20:14
    关注

    【相关推荐】



    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7647827
    • 你也可以参考下这篇文章:read与write函数实现文件的拷贝
    • 除此之外, 这篇博客: C库函数与系统函数中的 4.2 read函数和write函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      ssize_t read(int fd, void *buf, size_t count); ssize_t :有符号整型
      ssize_t write(int fd, const void *buf, size_t count);

      read 返回值

      • -1 读文件失败
        • errno == EINTR 被信号中断, 重启/quit
        • errno == EAGAIN 非阻塞方式读,且没有数据
        • 其他值,出现错误。perror() exit。
      • 0 文件读写完毕(读到文件,管道,socket末尾--------对端的关闭)
      • 大于0 :读取的字节数(buf=1024 1. ==1024, 2, < 1024 : 56)
      #include <stdio.h>
      #include <stdlib.h>
      #include <sys/types.h>
      #include <sys/stat.h>
      #include <fcntl.h>
      #include <unistd.h> //read,write
      #include <iostream>
      using namespace std;
      
      
      int main(){
          //打开一个以及存在的文件
          int fd = open("hello.txt",O_RDONLY);
          if(fd == -1){
              perror("文件打开失败");
              exit(1);
          }
          //创建一个新文件
          int fd1 = open("newfile.txt",O_CREAT | O_WRONLY,0777);
          if(fd1 == -1){
              perror("创建失败");
              exit(1);
          }
          //读文件
          char buf[2048] = {0};
          int count = read(fd,buf,sizeof(buf));
          if(count == -1){
              perror("读文件失败");
              exit(1);
          }
          while(count){
              //将读出的数据写入到另一个文件中
              int ret = write(fd1,buf,count);
              cout << "write bytes: " << ret << endl;
              count = read(fd,buf,sizeof(buf));
          }
          //关闭文件
          close(fd);
          close(fd1);
          
          return 0;
      }
      
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 12月9日