C语言基础(十一)- 文件和目录操作运算
来源:互联网 发布:电脑硬盘加密软件 编辑:程序博客网 时间:2024/05/21 06:00
C\C++关于FILE结构定义说明
//此结构VC定义于stdio.h头文件中,struct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前缓冲区的相对位置 char *_base; //指基础位置(应该是文件的其始位置) int _flag; //文件标志 int _file; //文件的有效性验证 int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取 int _bufsiz; //文件的大小 char *_tmpfname; //临时文件名 };typedef struct _iobuf FILE;
文件的打开、关闭、以及简单读写
# include <stdio.h># include <stdlib.h>int main() { FILE * open_file(char *, char *); FILE *fp; /* * 向文件中写入字符 * fputc 写入成功返回写入的字符,写入失败返回C语言定义的EOF(符号常量,值为-1) */ fp = open_file("C:/Users/kinglyjn/Desktop/test.txt", "a+"); //打开文件 char c = getchar(); while (c!='*') { fputc(c, fp); // c = getchar(); //从控制台取到一个字符 } fclose(fp); //关闭文件 /** * 从文件中读出字符(文件的打开方式必须为读方式或读写方式) * 文件结束时,fgetc函数就会返回文件的结束标志EOF(-1) */ fp = open_file("C:/Users/kinglyjn/Desktop/test.txt", "r"); c = fgetc(fp); while (c!=EOF) { putchar(c); //输出一个字符到控制台 c = fgetc(fp); // } fclose(fp); return 0;}//文件打开函数FILE * open_file(char * filename, char * mode) { FILE *fp = fopen(filename, mode); //r w a rb wb ab r+ w+ a+ rb+ wb+ ab+ 只读 重写 追加 if (fp==NULL) { printf("打开失败!\n"); exit(1); } else { printf("打开成功!\n"); } return fp;}/*r 打开只读文件,该文件必须存在r+ 打开可读写的文件,该文件必须存在w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失.若文件不存在则建立该文件a 以附加的方式打开只写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留a+ 以附加方式打开可读写的文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件*/
块读写函数fwrite和fread
# include <stdio.h># include <stdlib.h>typedef struct Student { char name[10]; float score;} Stu;int main() { FILE * open_file(char *, char *); FILE *fp; Stu stus[3] = { {"张三", 22.2}, {"李四", 33.3}, {"王五", 44.4} }; Stu stus2[3]; int len = 3; //fwrite //fwrite(buffer,size,count,fp) //(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。 //(2)size:要读写的字节数; //(3)count:要进行读写多少个size字节的数据项; //(4)fp:文件型指针。 fp = open_file("/Users/zhangqingli/Desktop/test.txt", "w"); for (int i=0; i<len; i++) { fwrite(&stus[i], sizeof(Stu), 1, fp); // } fclose(fp); //fread //fread(buffer,size,count,fp) fp = open_file("/Users/zhangqingli/Desktop/test.txt", "r"); for (int i=0; i<len; i++) { fread(&stus2[i], sizeof(Stu), 1, fp); } fclose(fp); for (int i=0; i<len; i++) { printf("%-10s %-5.2f\n", stus2[i].name, stus2[i].score); } return 0;}//文件打开函数FILE * open_file(char * filename, char * mode) { FILE *fp = fopen(filename, mode); //r w a rb wb ab r+ w+ a+ rb+ wb+ ab+ 只读 重写 追加 if (fp==NULL) { printf("打开失败!\n"); exit(1); } else { printf("打开成功!\n"); } return fp;}
格式化文件输入和输出函数fprintf和fscanf
- printf/scanf函数的读写对象是终端
- fprintf/fscanf函数的读写对象是磁盘文件
# include <stdio.h># include <stdlib.h>typedef struct { char name[10]; float score;} St;int main() { FILE * fp; FILE * open_file(char * filename, char * mode); //fprintf fp = open_file("/Users/zhangqingli/Desktop/test.txt", "w"); fprintf(fp, "%s %f", "张三", 23.2); fprintf(fp, "%s %f", "李四", 23.3); fprintf(fp, "%s %f", "王五", 23.4); fclose(fp); //fscanf St *stus = (St *) malloc(sizeof(St)*3); fp = open_file("/Users/zhangqingli/Desktop/test.txt", "r"); int i=0; while (!feof(fp)) { fscanf(fp, "%s %f", stus[i].name, &stus[i].score); i++; } fclose(fp); for (int i=0; i<3; i++) { printf("姓名:%s 分数:%f\n", stus[i].name, stus[i].score); } return 0;}//文件打开函数FILE * open_file(char * filename, char * mode) { FILE *fp = fopen(filename, mode); //r w a rb wb ab r+ w+ a+ rb+ wb+ ab+ 只读 重写 追加 if (fp==NULL) { printf("打开失败!\n"); exit(1); } else { printf("打开成功!\n"); } return fp;}
文件的定位
# include <stdio.h># include <stdlib.h>int main() { FILE *fp1; FILE * open_file(const char *, const char *); fp1 = open_file("/Users/zhangqingli/Desktop/test.txt", "rb"); //把文件的位置指针移动到文件尾 fseek(fp1, 0, SEEK_END); //获取文件当前指针的位置 long len = ftell(fp1); //根据前面的操作可获取文件的长度 printf("文件的大小为:%ld 字节\b", len); return 0;}FILE * open_file(const char * filename, const char * mode) { FILE *fp = fopen(filename, mode); if (fp==NULL) { printf("文件打开时出错!\n"); exit(1); } return fp;}
0 0
- C语言基础(十一)- 文件和目录操作运算
- 总结文件操作函数-目录(三)-C语言
- 黑马程序员---iOS基础---C语言中的位运算,文件操作等问题
- C语言基础 运算符和表达式
- C语言运算符和操作符
- Python基础-操作文件和目录
- Python基础-操作文件和目录
- c语言目录操作
- C语言基础(十)文件的操作
- C语言基础 14 文件操作
- [Linux]C语言遍历文件和目录
- [Linux]C语言遍历文件和目录
- C语言遍历文件和目录
- C语言遍历文件和目录
- C#--文件和目录操作小例子
- Object-C文件和目录操作
- C语言位运算详解(基础)
- C语言基础(三)运算符
- C语言基础(十)- 预处理
- MySQL锁定状态查看命令
- mac终端Iterm2支持rz和sz的解决方案
- VS调试 不会命中断点,源代码与原始版本不同的解决办法
- Map的比较与遍历
- C语言基础(十一)- 文件和目录操作运算
- 3.1 HTTP报文的结构及各部分的介绍
- vs2015没有"安装与部署"选项
- 数据库备份与恢复
- spark streaming 2.02 Receiver 运行executor的调度算法
- C语言基础(十二)- 数据结构概览
- Intellij Idea 2016 提示Java home is different.无法正常编译Android项目的解决办法
- 【PHP】php的伪静态的实现
- Mysql集群安装部署,Slave-Mater-Master-Slave模式