文件编程(二)
来源:互联网 发布:如何成为暴发户 知乎 编辑:程序博客网 时间:2024/06/05 19:31
标准I/O库
C标准库提供了操作文件的标准I/O函数库,与系统调用相比,主要差别是实现了一个跨平台的用户态缓冲的解决方案。
一个I/O缓冲的例子如下:
1、fopen():
#include <stdio.h>int main(){FILE *fp = fopen("test3","ab+");if(fp == NULL){perror("fopen");return -1;}printf("打开文件成功\n"); return 0;}
2、fread():
#include <stdio.h>#define SIZE 1024int main(){FILE *fp = fopen("BTree.c", "ab+");if(fp == NULL){perror("fopen");return -1;}char buf[SIZE] = {0};int ret = 0;while(ret = fread(buf, sizeof(char), SIZE - 1, fp)){buf[ret*sizeof(char)] = '\0';printf ("%s\n", buf);}if(ret == 0 && !feof(fp)){perror("fread");return -1;}printf("文件读取结束\n");fclose(fp); return 0;}
#include <stdio.h>#define SIZE 1024int main(){FILE *fp1 = fopen("1.ppt", "ab+");if (fp1 == NULL){perror ("fopen1");return -1;}FILE *fp2 = fopen("2.ppt", "ab+");if (fp2 == NULL){perror ("fopen2");return -1;}char buf[SIZE] = {0};int ret = 0;while(ret = fread(buf,sizeof(char),SIZE,fp1)){fwrite(buf,sizeof(char),ret,fp2);}if(ret == 0 && !feof(fp1)){perror("fread");return -1;}printf("文件复制成功\n");fclose(fp1);fclose(fp2); return 0;}
4、在文件中存取结构体数据
#include <stdio.h>#define SIZE 1024typedef struct student{int id;char name[20];}STU;void write_data(STU *a,int len){FILE *fp = fopen("student", "ab+");if (fp == NULL){perror ("fopen");return;}// 要写入个数printf("len = %d\n",len);fwrite(&len, sizeof(int), 1, fp);int i;for (i = 0; i < len; i++){// 写入数据长度int count = sizeof(a[i]);fwrite(&count, sizeof(int), 1, fp);// 写入数据fwrite(&a[i], sizeof(STU), 1, fp);}fclose(fp);}void read_data(){FILE *fp = fopen("student", "ab+");if (fp == NULL){perror ("fopen");return;}// 读记录的个数int count;fread (&count, sizeof(int), 1, fp);printf ("记录个数是:%d\n", count);int i;STU tmp;for (i = 0; i < count; i++){int len;fread (&len, sizeof(int), 1, fp);// 读取数据fread (&tmp, len, 1, fp);printf ("id = %d, name = %s\n", tmp.id, tmp.name);}fclose(fp);}int main(){int i;STU a[20];int len = sizeof(a) / sizeof(a[0]);for (i = 0; i < 20; i++){a[i].id = i;sprintf (a[i].name, "zhang%d", i);}// 写入数据write_data(a,len);// 读数据//read_data(); return 0;}
阅读全文
0 0
- 文件编程(二)
- Linux 之文件编程(二)
- (二) Unix/Linux 文件编程
- shell编程(二):文件操作
- unix编程(二)文件和目录
- 文件IO编程二
- Linux系统编程--文件(二)
- Linux-C高级编程(1)文件操作(二)
- Unix环境高级编程学习笔记(二) 文件IO
- 文件io(二)--unix环境高级编程笔记
- 文件和目录(二)--unix环境高级编程读书笔记
- 【java swing 编程】文件替换小秘书(二)
- Linux下编程-----文件与IO(二)stat函数
- linux c 编程实战:文件操作总结(二)
- Java网络编程Demo(二)TCP文件上传
- UNIX环境高级编程-读书笔记-文件操作(二)
- Unix/Linux编程-文件和目录(二)
- linux 环境下c,c++编程(二):C编程中的编译文件
- LeetCode 345 Reverse Vowels of a String
- 深入分析 Java 中的中文编码问题
- EF提示“序列化类型为XXX的对象时检测到循环引用”
- 笨办法学 Python · 续 练习 0:起步
- 洛谷P2434 SDOI 区间
- 文件编程(二)
- 数据库SQL关联查询
- I-最短的名字
- 牛顿法与java实现
- 算法与数据结构 其一 算法时间复杂度
- 身份证号详细验证的正则
- 【asp】一般处理程序中使用Session
- CREATE INDEX 语句
- OTT安卓电视盒系统发展的3种模式