【C语言第十六回合】:文件函数大锅饭
来源:互联网 发布:12306购票软件下载 编辑:程序博客网 时间:2024/06/11 00:42
【C语言第十六回合】:文件函数大锅饭
【学习目标】
1. fprintf和fscanf
2. fgets和fputs
3. fseek和ftell
A:fprint和fscanf的使用
( 1 ):fprint
按照给定的格式输入文件流中。
函数原型:intfprintf ( FILE * stream, const char * format, ... );
[程序]
#include <stdio.h>#include <stdlib.h> //for exit() int main( void ){ charstr[]= "www.codingit.howbbs.com"; FILE*pfile = NULL ; pfile=fopen( "test.txt", "w" ); //打开文件,并指向文件首地址 if(pfile== NULL ) //检测指针获取地址 { perror( "Cannot open thisfile\n" ); exit( 1 ); } fprintf(pfile, "%s", str ); fclose(pfile ); //关闭文件指针 return 0; }
在当前目录下的test.txt中有如下内容:
www.codingit.howbbs.com
( 2 )fscanf的使用
按照给定的格式从文件流中读取数据.
函数原型:intfscanf ( FILE * stream, const char * format, ... );
[程序]
#include <stdio.h>#include <stdlib.h> //for exit() int main( void ){ charstr[ 100 ]; FILE*pfile = NULL ; pfile=fopen( "test.txt", "r" ); //打开文件,并指向文件首地址 if(pfile== NULL ) //检测指针获取地址 { perror( "Cannot open thisfile\n" ); exit( 1 ); } fscanf(pfile, "%s", str ); printf("读取的内容为:%s\n", str ); fclose(pfile ); //关闭文件指针 return 0; }
运行结果:
读取的内容为: www.codingit.howbbs.com
( 3 )fprintf和fscanf一起使用
//综合的fprintf和fscanf的使用#include <stdio.h>#include <stdlib.h> //for exit() int main( void ){ //注意字符数组的大小!!!超过范围会有错误!!! charstring[ 1000 ]; charstr[ 1000 ]= "www.blog.csdn.net/mirrorsbeyourself"; FILE*pfile = NULL ; pfile=fopen( "test.txt", "a+" ); //打开文件 if(pfile== NULL ) //检测指针获取地址 { perror( "Cannot open thisfile\n" ); exit( 1 ); } //再写入 一些数据 fprintf(pfile, "%s", str ); //把文件指针指向文件的首地址 rewind(pfile ); //把文件中的 fscanf(pfile, "%s", string ); printf("读取的内容为:" ); printf("%s\n", string ); fclose( pfile ); //关闭文件指针 return 0; }
运行结果:
B:fgets和fputs的使用
( 1 )fgets的使用
从文件流中读取数据
函数原型:char * fgets ( char * str, int num, FILE * stream );
[ 程序 ]
#include <stdio.h>#include <stdlib.h> // for exit int main( void ){ FILE*pfile= NULL; charstr[ 100 ]; //注意,只能存100个字符 pfile=fopen( "test.txt", "r" ); if(pfile== NULL ) { perror("Cannot open this file\n" ); exit(1 ); } fgets(str, 100, pfile ); printf("成功读取文件的内容" ); printf("文件内容为: " ); puts(str ); //显示str中的内容 return0;}
运行结果:
( 2 )fputs的使用
向文件流中输入数据
函数原型:intfputs ( const char * str, FILE * stream );
[ 程序 ]
#include <stdio.h>#include <stdlib.h> // for exit() int main( void ){ FILE*pfile= NULL; char*str= "http://codingit.howbbs.com/"; pfile=fopen( "test.txt", "w" ); if(pfile== NULL ) { perror("Cannot open this file\n" ); exit(1 ); } fputs(str, pfile ); printf("成功向文件输入数据\n" ); fclose(pfile ); return0;}
运行结果:
C:fseek和ftell的使用
( 1 )fseek的使用
返回文件位置的索引
函数原型:intfseek ( FILE * stream, long int offset, int origin );
a. stream:文本文件或二进制文件。
b. offset:
(1) 二进制文件:字节偏移量,从origin(起始地址)的数量。
(2) 文本文件:要么零,或取文件指针返回一个值。
c. origin:
(origin)起始地址常量
参考位子
SEEK_SET
首地址
SEEK_CUR
当前地址
SEEK_END
位地址
[程序]
//fseek函数的使用实例#include <stdio.h>#include <stdlib.h> // for exit() int main( void ){ FILE*pfile= NULL; char str[ 100 ]; pfile=fopen( "test.txt", "r" ); if(pfile== NULL ) { perror("Cannot open this file\n" ); exit(1 ); } //origin==SEEK_SET, offset= 0 fseek(pfile, 0, SEEK_SET ); //从当前开始获取数据 fgets(str, 100, pfile ); printf("SEEK_SET( 0 ): %s\n", str ); //使指针指回首地址 rewind(pfile ); //origin=SEEK_CUR, offset= 7 (向右偏移量为7) fseek(pfile, 7, SEEK_CUR ); //从当前开始获取数据 fgets(str, 100, pfile ); printf("SEEK_CUR( 7 ): %s\n", str ); //使指针指会首地址 rewind(pfile ); //origin=SEEK_END offset= -20(向左偏移20) fseek(pfile, -20, SEEK_END ); //从当前开始获取数据 fgets(str, 100, pfile ); printf("SEEK_END( -20 ): %s\n", str ); fclose( pfile ); return0;}
运行结果:
( 2 )ftell的使用
函数原型:long intftell ( FILE * stream );
作用:求文件首地址到当前位置的字符个数。
[程序]
#include <stdio.h>#include <stdlib.h> //for exit(), malloc( ) int main( void ){ FILE*pfile= NULL; char*str= NULL; intnum= 0; pfile=fopen( "test.txt", "r" ); if(pfile== NULL ) //检测 { perror( "Cannot open this file\n"); exit(1 ); } //把指针指向文件的位地址 fseek(pfile, 0, SEEK_END ); num=ftell( pfile ); printf("文件中有%d个字符\n", num ); str=( char *)malloc( ( num+ 1 )* sizeof( char ) ); if(str== NULL ) //检测 { perror("内存分配失败\n" ); exit(1 ); } //重新把指针指向文件首地址 rewind( pfile ); //获取文件中的内容 fgets(str, num+ 1, pfile ); //输出内容 printf("文件中的数据为:%s\n", str ); fclose(pfile ); return0;}
运行结果:
D:rewind函数的使用
原型:voidrewind ( FILE * stream );
作用:把文件指针指向文件的首地址(具体情况看上面程序)
E:fflush的使用
原型:int fflush( FILE * stream );
作用:刷新缓冲区。
调用fflush函数可以将缓存区中任何威胁的数据发送到有pfile指定的文件中去。如果pfile是空指针,将刷新掉搜有的输出缓冲。对一个输入流使用fflush函数的效果没有定义。只要最近一次使用流不是输入操作,就可以读一个更新流使用这个函数。
特别注意:要了解更多相关知识,请到www.cplusplus.com查找,谢谢
【指尖的微笑】错误在所难免,希望得到大家的指正^-^
LearnCoding(http://it.bangedushuren.cn/)原创,转载请注明
- 【C语言第十六回合】:文件函数大锅饭
- C语言第十回合:函数大揭秘
- C语言第十五回合:拜访文件
- 【C语言的学习】第六回合:输入输出函数大集合
- 【C语言的学习】第八回合:函数大集合
- C语言第六回合:输入输出相关出函数大集合
- 【C语言的学习】第十五回合:文件大集合
- C语言第七回合:数组
- C语言第十二回合:指针
- C语言模拟回合制游戏 源码
- C语言第一回合:初次相识
- C语言第十三回合:再谈指针
- 【C语言的学习】第十四回合:动态内存分配函数大集合
- C语言第十六篇:fflush函数有什么作用?
- C语言初学者入门讲座 第十六讲 文件(1)
- C语言初学者入门讲座 第十六讲 文件(2)
- C语言初学者入门讲座 第十六讲 文件(2)
- C语言初学者入门讲座 第十六讲 文件(1)
- Struts2 自定义Result
- Dijkstra算法实现==2014hiho第23周最短路问题
- 循环嵌套的时间复杂度分析
- Google 的厕所内测文化
- linux 各种配置教程
- 【C语言第十六回合】:文件函数大锅饭
- 推荐一个Linux远程桌面工具
- centos 6.5 安装gitlab安装需注意的问题
- 1111111
- C/C++ struct初始化/复制/内存分配技巧
- mongoDB图形化界面mongoVUE 的破解方法
- iOS应用内打开App Store应用详情界面
- Python特殊语法:filter、map、reduce、lambda [转]
- 数据流图的画法