linux c通過檔案描述符以及write和read方法對檔案進行讀寫
阿新 • • 發佈:2019-02-17
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; }