有时候会想做这些的意义到底是什么,我期盼的是我能得到的吗,我所失去的是我所不该失去的吗?
1.c语言中的文件是什么?
文件就是存储在外部介质(磁盘、可移动盘)中的数据的集合。
2.c语言的输入与输出?
输入是从“源端”获取数据;输出是向“终端”写入数据。
3.c语言文件系统中的类型?
FILE:对象类型
fpos_t:非数组完整对象类型
4.流的概念及分类
4.1流的概念
通常把抽象出来的“标准逻辑设备”或“标准文件”称作“流”。
4.2流的分类
方向:输入流和输出流。从文件获取数据的流成为输入流,向文件输出数据称为输出流。
数据形式:文本流和二进制流。
文本文件与二进制文件有什么区别?
文本文件中把要存储的数据当成一系列字符处理,把每个字符对应的ASC码存入文件中。
二进制文件则是将数据以二进制的形式存储到文件中。
5.文件的操作
分为:打开文件、读写文件、关闭文件
5.1fopen
需要指定文件位置及打开方式。
打开成功返回对应的FILE类型指针;失败返回NULL。
5.2fclose
参数为要关闭的流对象指针。
成功返回0;失败返回EOF(-1)。
5.3fread --- 块数据读出函数
原型: size_t fread ( void * ptr, size_t size, size_t count, FILE * stream )
ptr: 存储从流中读取到的数据到ptr所指向的内存中。
size:读取元素的大小。
count:读取元素的个数。
stream:指向FILE对象的指针。
返回值:
成功,返回读取对象个数。
失败,返回零。
eg:从9.8.cpp中一次读127个字符
FILE* fp = fopen("9.8.cpp", "r"); if (fp == NULL) { printf("文件打开失败!\n"); return 0; } //读操作 char buff[128] = { 0 }; int n = 0; while (n = fread(buff, 1, 127, fp)) { printf("%s",buff); memset(buff, 0, sizeof(buff)); } fclose(fp);
5.4fwrite --- 与上对应
5.5fseek --- 更改文件中指针的指向
原型: int fseek( FILE *stream, long offset, int origin )
/*fseek(fp, 0, SEEK_END);*/ //SEEK_SET 文件头 SEEK_CUR 文件位置 fseek(fp, 5, SEEK_SET); //光标距离文件头向后5字节偏移 fseek(fp, -2, SEEK_END); //光标距离文件尾向前便宜2个字节 fseek(fp, 0, SEEK_CUR); //光标距离当前位置偏移量为0
5.7ftell --- 统计文件头到当前光标的位置
返回值为long类型。