io
来源:互联网 发布:java获取系统当前时间 编辑:程序博客网 时间:2024/06/15 18:09
文件读写是一个常见且重要的操作,今天就来熟悉一下文件读写函数read(),open(),write(),fread(),fopen(),fwrite()等操作。
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#define FILENAME "test.txt"int read_write(){ int fd = -1; int ret = -1; const char buf_w[] = "Hello World."; char buf_r[32] = {0}; fd = open(FILENAME, O_RDWR | O_CREAT); if(fd < 0) { perror("open"); return -1; } ret = write(fd, buf_w, strlen(buf_w)); if(ret != strlen(buf_w)) { printf("ret =%d\n", ret); perror("write"); goto out; } ret = lseek(fd, 0, SEEK_SET); if(ret < 0) { perror("lseek"); goto out; } ret = read(fd, buf_r, sizeof(buf_r)); if(ret < 0) { perror("read"); goto out; } printf("read buf=%s,ret=%d\n", buf_r, ret); fsync(fd);out: close(fd); return 0;}int fread_write(){ FILE *file1 = NULL; int ret = -1; int file_len = 0; char buf_w[] = "wtf."; file1 = fopen(FILENAME, "r+"); if(!file1) { perror("fopen"); return -1; } ret = fseek(file1, 0, SEEK_END); if(ret < 0) { perror("fseek"); goto out; } file_len = ftell(file1); if(file_len < 0) { perror("ftell"); goto out; } ret = fseek(file1, 0, SEEK_SET); if(ret < 0) { perror("fseek"); goto out; } char * buf_r = (char *)calloc(file_len, sizeof(char)); if(!buf_r) { printf("calloc error!\n"); goto out; } memset(buf_r, 0, sizeof(char)*file_len); ret = fread(buf_r, sizeof(char), file_len, file1); if(ret != file_len) { perror("fread"); goto out; } printf("fread buf_r=%s -file_len=%d\n", buf_r, file_len); ret = fwrite(buf_w, sizeof(char), strlen(buf_r), file1); if(ret != strlen(buf_r)) { perror("fwrite"); goto out; } free(buf_r); fflush(file1);out: fclose(file1); return 0;}int main(int argc, char const *argv[]){ read_write(); fread_write(); return 0;}
阅读全文
0 0