1. 程式人生 > >linux c通過檔案描述符以及write和read方法對檔案進行讀寫

linux c通過檔案描述符以及write和read方法對檔案進行讀寫

1、write和read方法講解

#include<unistd.h>
ssize_t read(int fd, void *buf,size_t count);

fd為檔案描述符,buf緩衝區指標,count表示要讀取的位元組數
返回:讀到的位元組數,若已經到檔案尾端返回0,出錯返回-1


#include<unistd.h>
ssize_t write (int fd, void *buf, size_t count);

fd為檔案描述符,buf緩衝區指標,count表示要寫的位元組數
返回:若成功已寫的位元組數,若出錯為-1

2、程式碼實現讀寫

比如在/home/chenyu/Downloads/chenyu檔案進行寫和讀

#include<sys/stat.h>
#include<sys/types.h>
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<fcntl.h>
//特麼你這裡要注意了,不需要寫=號,字串記得加雙引號
#define FILEPATH "/home/chenyu/Downloads/chenyu"
#define SIZE 100
//讀寫方式開啟,向檔案新增內容從檔案尾開始寫
#define FLAGS O_RDWR | O_APPEND


int main()
{
  int count = 0;
  const char *pathname = FILEPATH;
  printf("%s", pathname);
  int fd;
  char data[SIZE];
  if ((fd = open(pathname, FLAGS)) == -1) {
     printf("open file fail\n");
     return 0;
  }
  printf("open file success\n");
  printf("請輸入字串\n");
  scanf("%s", data);
  count = strlen(data);
  printf("show data:%s\n", data);
  printf("data length is %d\n", count);
  if (write(fd, data, count) == -1) {
     printf("write data fail\n");
     return 0;
  }
  printf("write data success\n");
 // close(fd);
  fd = open(pathname, O_RDONLY);
  char content[100];
  read(fd, content, sizeof(content));
  printf("chenyu content is %s\n", content);
  return 0;
}
              


3、結果展示