- 打开文件 fopen();
- 关闭文件 fclose();
- 从文件中读取一个字符 fgetc();
- 从文件中写入一个字符 fputc();
- 从文件中读取一行 fgets();
- 向文件中写入一行 fputs();
- 检查文件是否结束 feof();
- fwrite()
- fread()
为读和写打开一个文本文件,当文件不存在的时候将会创建新文件
(注:打开文本文件里面存在数据时将会清空)
int getc(FILE *stream),从文件流中读取字符,读到文件尾返回EOF
(注:getc与fetc作用相同,但在某些库中getc为宏定义)
int puts(const char *s),将字符串输出到终端,输出遇到’‘也就是字符串的标志符才会停止,显示字符串时会自动在其后添加换行符
//代码片1 int main(int argc,char *argv[]) { char buf[5]; gets(buf); printf("%s",buf); return 0; } //输入affection //将会输出affection,但是实际buf的长度为5,导致gets访问未被分配的内存 //如果程序其他部分使用这个内存,则程序将会报错一、fseek函数
int fseek(FILE * File, long Offset, int Origin);
第二个参数是偏移量
第三个参数是模式,模式有以下几种
- SEEK_SET 文件开始处
- SEEK_CUR 当前位置
- SEEK_END 文件末尾
eg. fseek(fp,0,SEEK_SET); //定位至文件开始处 fseek(fp,10,SEEK_SET); //定位至文件的第10个字节 fseek(fp,2,SEEK_CUR); //定位至当前位置往后2个字节 fseek(fp,0,SEEK_END); //定位至文件末尾 fseek(fp,-10,SEEK_END); //定位至文件末尾往前10个字节二、ftell函数
long ftell(FILE * _File);
它返回的是参数指向文件的当前位置距文件开始处的字节数。
三、fscanf函数int fscanf(FILE * stream,const char *format,[arugment...]);
在文件 *** 作中的妙用:
比如有一个文件records.txt,文本内容为 学号 姓名 成绩 S001 Judy 80 S002 Cindy 78 S003 Helens 90 如果要将文本中的内容分割出来用数组保存就可以用fscanf这个函数 int main() { char id[10]; char name[10]; char score[10]; FILE * fp = fopen("F:\records.txt", "r"); if (fp == NULL) { perror("Open Fail"); } else { fscanf(fp, "%s%s%s", id, name, score); printf("id = %sn", id); printf("name = %sn", name); printf("score = %sn", score); fclose(fp); } return 0; } //输出为 id = S001 name = Judy score = 80
其中要注意的是id,name,score数组能够存储得下文本中的值,比如说当名字超过10个字符时,由于name表示的是首地址,可能在运行的时候不会报错,但是实际已经发生数组越界,当程序的其他部分使用越界部分的内存时,程序将会报错
四、fprintf函数int fprintf(FILE *fp,const char *format,[argument]);
//往文本中写入 S004 Dina 96 int main() { char id[10] = "S004"; char name[10] = "Dina"; char score[10] = "96"; FILE * fp = fopen("F:\records.txt", "a+"); if (fp == NULL) { perror("Open Fail"); } else { fprintf(fp, "n%s %s %s", id, name, score); printf("id = %sn", id); printf("name = %sn", name); printf("score = %sn", score); fclose(fp); } return 0; } //文件中的内容变成了 S001 Judy 80 S002 Cindy 78 S003 Helens 90 S004 Dina 96
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)