Linux下的檔案程式設計例子
阿新 • • 發佈:2018-11-17
1、寫入數字
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #define BUFFER_SIZE 1024 #define FILE_PATH "./file.txt" /* * 程式入口 * */ int main(int argc,char **argv) { int test_fd = -1; int ret = 1; int buffer = 500; int num = 0; /*開啟或建立原始檔,並將檔案長度截斷為0*/ if((test_fd=open(FILE_PATH, O_RDWR|O_CREAT|O_TRUNC))==-1) { printf("Open %s Error\n",FILE_PATH); exit(1); } /*寫入一個數字*/ ret = write(test_fd, &buffer, sizeof(int)); if( ret < 0) { printf("write Error\n"); exit(1); } printf("write %d byte(s) data\n",ret); /*將檔案指標移到最開始處去讀檔案中寫入的數字*/ lseek(test_fd, 0L, SEEK_SET); ret= read(test_fd, &num, sizeof(int)); if(ret==-1) { printf("read Error\n"); exit(1); } printf("read %d byte(s) data,the number is %d\n", ret, num); close(test_fd); exit(0); }
2、寫入結構體
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <time.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #define FILE_PATH "./file.txt" typedef struct file_record { int index; int file_size; time_t timep; }FILE_RECORD; int main() { int ret = 0; int fd = -1; time_t timep = 0; FILE_RECORD file_record; struct stat buf; memset(&file_record, 0, sizeof(FILE_RECORD)); memset(&buf, 0, sizeof(struct stat)); time(&timep); stat(FILE_PATH, &buf); /*開啟或建立原始檔,並將檔案長度截斷為0*/ if((fd=open(FILE_PATH, O_RDWR|O_CREAT|O_TRUNC))==-1) { printf("Open %s Error\n",FILE_PATH); exit(1); } file_record.index = fd; file_record.file_size = buf.st_size; file_record.timep = timep; /*寫入一個結構體*/ ret = write(fd, &file_record, sizeof(FILE_RECORD)); if( ret < 0) { printf("write Error\n"); exit(1); } printf("write %d byte(s) data\n",ret); memset(&file_record, 0, sizeof(FILE_RECORD)); /*將檔案指標移到最開始處去讀檔案中寫入的結構體*/ lseek(fd, 0L, SEEK_SET); ret= read(fd, &file_record, sizeof(FILE_RECORD)); if(ret==-1) { printf("read Error\n"); exit(1); } printf("read %d byte(s) data,the time is %s\n", ret, ctime(&(file_record.timep))); close(fd); exit(0); }