C语言文件的输入输出知识点
2015-07-11 09:25
495 查看
文件类型指针
定义文件指针变量的一般形式为:FILE *文件结构指针变量名
例如:FILE *fp;
注意:只有通过文件指针,才能调用相应的文件。
文件的打开(fopen函数)
常用以下方式打开文件:FILE *fp; if ((fp=fopen("file1", "r")) ==NULL ) {printf("cannot open this file\n"); exit(0); }
文件的关闭(fclose函数)
例如:fclose(fp);
fclose函数也带回一个返回值,当顺利关闭文件时,返回0,否则返回EOF(-1)。
文件的读写
1、fputc函数和fgetc函数(putc函数和getc函数)(1)、fputc函数
把字符写入到磁盘文件,一般的调用方式为:
fputc(ch,fp)
(2)、fgetc()函数
从指定文件读入一个字符。fgetc函数的调用形式为:
ch=fgetc(fp);
从文本文件中顺序读入文件内容,并在屏幕上显示出来,可以用:
ch = fgetc(fp); while(ch != EOF) {putchar(ch); ch = fgetc(fp);}
从二进制文件中顺序读入文件内容,可以用:
while(!feof(fp)) {ch = fgetc(fp); .... }
fread函数和fwrite函数
fread函数和fwrite函数用来读写一个数据块。它们的一般调用方式为:
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
其中:
buffer:是一个指针。对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
size:要读写的字节数。
count:要进行读写多少个size字节的数据项。
例:如果有如下的结构体类型:
struct student_type{char name[10]; int num; int age; char addr[30]; }stu[40]; for(i=0; i<40; i++) /* 每次写一个学生 */ fwrite(&stu[i], sizeof(struct student_type), 1, fp); //或者只写一次 fwrite(stu, sizeof(struct student_type), 40, fp);
fprintf函数和fscanf函数
fprintf(文件指针,格式字符串,输出列表);fscanf (文件指针,格式字符串,输入列表);
例如:
fprintf(fp,"%d,%6.2f",i,t);
它的作用是将整型变量i和实型变量t的值按%d和%6.2f的格式输出到fp所指向的文件中。如果i=3,t=4.5,则输出到磁盘文件上的是以下字符串:
3,4.50
同样,用fscanf函数可以从磁盘文件上读入ASCII字符:
fscanf(fp,"%d,%f",&i,&t);
磁盘文件上如果有以下字符:3,4.5 则将磁盘文件的数据3送给变量i,4.5送给变量t。
最好不用fprintf和fscanf函数,而用fread和fwrite函数。
其他读写函数
1、putw和getw函数
putw和getw函数用来对磁盘文件读写一个字(整数)。例如:
putw(10,fp); /* 整数10写入文件fp */ i=getw(fp); /* 从文件fp读一个整数给变量i */
2、fgets和fputs函数
fgets函数的作用是从指定文件读入一个字符串。例如:
fgets(str, n,fp) /* 从文件fp读n-1个字节到str,str最后一个字节加'\0'*/
fputs函数的作用是向指定的文件输出一个字符串。例如:
fputs(str,fp) /* 把字符串str写入fp */
文件的定位
1、rewind函数一般的使用形式为:
rewind(fp);作用:使文件fp的位置指针指向文件开始。
2、fseek函数和随机读写
fssek (文件类型指针,位移量,起始点);
功能:把文件的位置指针从起始点开始,移动指定位移量的字节数。成功返回0,失败返回非0。
3、ftell函数
例如:
i=ftell(fp); if(i==-1L) printf("error\n");
出错的检测
C 标准提供一些函数用来检查输入输出函数调用中的错误。1、ferror函数
在文件操作时,如果出错,除了操作函数的返回值有所反应外(如fopen()函数返回NULL),还可以用ferror函数获得是否出错。它的一般调用形式为:
ferror(fp)
功能:若上一次文件操作未出错,返回0;否则返回非0。
2、clearerr函数
clearerr函数的作用是使文件错误标志和文件结束标志置为0。 文件操作出现错误后,ferror(fp)函数值为一个非0值,该错误信息将一直保留在系统中,在调用clearerr(fp)函数后,ferror(fp)函数值变成0。
文件输入输出小结
常用的缓冲文件系统函数分类 | 函数名 | 功能 |
打开文件 | fopen() | 打开文件。 |
关闭文件 | fclose() | 关闭文件。 |
文件定位 | fseek() rewind() ftell() | 改变文件位置指针位置 使文件位置指针重新置于文件开头 返回文件位置指针的当前值 |
文件读写 | fgetc(),getc() fputc(),putc() fgets() fputs() getw() putw() fread() fwrite() fscanf() fprintf() | 从指定文件取得一个字符。 把字符输出到指定文件。 从指定文件读取字符串。 把字符串输出到指定文件。 从指定文件读取一个字(int型)。 把一个字(int型)输出到指定文件。 从指定文件中读取数据项。 把数据项写到指定文件。 从指定文件按格式输入数据。 按指定格式将数据写到指定文件中。 |
文件状态 | feof() ferror() clearerr() | 若到文件末尾,函数值为“真”(非0)。 若对文件操作出错,函数值为“真”(非0)。 使ferror和feof函数值置零。 |
相关文章推荐
- C++非递归队列实现二叉树的广度优先遍历
- 【C++】引用计数器简单示例
- c++类型转换
- c++单链表的相关操作
- 【leetcode-7】Reverse Integer(C语言)
- 使用#ifdef _cplusplus 实现c 和 c++的混合编程
- uplooking-C语言基础
- 不可以!
- C小加 之 随机数
- 黑马程序员-IOS学习笔记 C语言编程时常犯十八个错误
- c语言学习之数组3
- c语言学习之数组2
- c语言学习之数组2
- [强制类型转换]C语言中的强制类型转换相关
- 初识C++
- c语言学习之数组
- [memory]C++中栈区 堆区 常量区(由一道面试题目而学习)
- [Pointer]在C语言中进行float型与uint8型数组内存拷贝时出现的问题与解决
- [HWRelated]C语言中的底层技术
- [Pointer]C语言中指针的高级用法