系統程式設計——write()函式
阿新 • • 發佈:2018-12-25
1、程式檔案
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #define SIZE 1024 // 簡單檔案寫入 int main1() { // 以只讀方式開啟檔案 // fd:檔案描述符 int fd = open("tmp.txt", O_WRONLY | O_CREAT); if (-1 == fd) { perror("開啟test.c檔案失敗"); return -1; } // ssize_t write(int fd, const void *buf, size_t count); ssize_t ret = write(fd, "hello world", 11); if (-1 == ret) { perror("寫入失敗"); return -1; } printf ("寫入成功,寫入的位元組數:%ld\n", ret); close(fd); return 0; } // 開啟一個檔案,並執行寫入 int main2() { // O_APPEND:每次寫之前,將標誌位移動到檔案的末端。 int fd = open("tmp.txt", O_WRONLY | O_CREAT | O_APPEND, 0766); if (-1 == fd) { perror("開啟tmp.txt檔案失敗!"); return -1; } char buf[SIZE]; while (1) { fgets(buf, SIZE, stdin); if (0 == strncmp(buf, "end", 3)) break; ssize_t ret = write(fd, buf, strlen(buf)); if (-1 == ret) { perror("寫入失敗"); return -1; } } close(fd); return 0; } // 檔案賦值 int main3() { // fd1;檔案描述符 int fd1 = open("1.ppt", O_RDONLY); int fd2 = open("2.ppt", O_WRONLY | O_CREAT, 0766); if (-1 == fd1 || -1 == fd2) { perror("開啟檔案失敗"); return -1; } char buf[SIZE]; ssize_t ret; // 返回值為實際讀取到的位元組數 while((ret = read(fd1, buf, SIZE)) != 0) { if (-1 == ret) { perror("讀失敗"); break; } ret = write(fd2, buf, ret); if (-1 == ret) { perror("寫失敗"); break; } } close(fd1); close(fd2); return 0; } // int main() { // int fd = open("tmp.txt", O_WRONLY|O_CREAT | O_TRUNC, 0766); int fd = open("tmp.txt", O_RDONLY); ssize_t ret1 = write(fd, "10", 1); if (-1 == fd) { perror("開啟tmp.txt檔案失敗"); return -1; } int a = 10; ssize_t ret = read(fd, &a, sizeof(int)); printf ("a = %d\n", a); close(fd); return 0; }