文件字符读写函数fscanf()和 fgets() 比较
一、 文件格式化读入函数 fscanf()
int fscanf(文件指针,格式化字符串,输入列表);
返回值: 整形,输入列表中定义字符串的个数。
1, 例如读取字符串:
char str1[256], str2[256];
FILE *file;
int n,m;
n=fscanf(file,"%s%s",str1,str2); \\n=2
m=fscanf(file,"%s%s\n",str1,str2); \\m=2,格式字符串中可以加入格式控制符
2, fscanf()函数读入开始和结束:
读入开始:从第一个实字符开始,即从第一个非空格符‘ ’、非跳格符tab、非回车换行符‘\n’、非EOF开始。
读入结束:读入过程中遇到的第一个空格符‘ ’、跳格符tab 、 回车换行符‘\n’ 或者EOF。
3, 注意:fscanf()并不读入结束符,也就是空格符、回车符、跳格符tab本身不会被输入字符串。
4,举例如下:
E盘下有文件 e:\\test.txt,文件内容如下:
endloop
endfacet next
triangle
程序实例case 1:
int main()
{
FILE *file;
file=fopen("e:\\test.txt","r"); char str[];
int n(0);
if(1!=fscanf(file,"%s",str)) //读入字符串个数为1,所以返回值为1
return false; long strLenth();
strLenth=strlen(str); //字符串str长度为7,并未取入第一行末尾回车换行符;
//此时文件指针file指向第一行最后的回车换行字符'\n'
cout<<"lenth of str:"<<strLenth<<endl; //7
printf("%s",str); //"endloop"
printf("%c\n",fgetc(file)); //获取并输出test.txt文件第一行最后的回车换行字符'\n'
printf("%c\n",fgetc(file)); //读入并输出test.txt文件第二行开头字符'e'
fclose(file);
}

程序实例case2:
int main()
{
FILE *file;
file=fopen("e:\\test.txt","r"); char str1[], str2[]; fscanf(file,"%*s"); //跳过第一个字符"endfacet",file指向第一行最后一个字符回车换行符'\n' if ( != fscanf(file,"%s %s\n",str1,str2)) return false;
//file执行向str1,str2读入两个字符串;由于fscanf()规定从第一个非空格、非回车换行符、非文件结尾开始读入,
//所以file跳过当前指向的'\n',从第二行开始读入;读入字符串个数为2,所以返回值为2;
//因为输入格式字符串"%s %s\n"最后加了回车控制符,所以file当前指向第二行第一个字符. printf("%s %s\n",str1,str2); //"endfacet next"
printf("%c\n",fgetc(file)); //输出test.txt文件第二行开头字符't' fclose(file);
}

二、从文件读入一个字符串函数 fputs()
char * fgets(str,n,fp);
返回值:返回字符串 str的首地址。
n为要求得到的字符数,但只能从文件fp输入n-1个字符,第n个字符为自动加入的'/0'。
1, 例如:
char *pCh;
char str[128];
FILE *file;
pCh=fgets(str, 128, file);
2, fgets()读取的开始和结束:
fgets()读入开始:所有非EOF开始的字符,即fgets()可以以空格‘ ’、跳格tab、回车换行符'\n'开始读入。
fgets()读入结束:读完n-1个字符之前,遇到换行‘\n’、文件结束EOF。
3, 注意:fgets()函数在读完n-1个字符之前,可以读入空格符' ', 回车符'/n',也可以以他们为开始读入。
4, 举例:
main()
{
FILE *file;
file=fopen("e:\\test.txt","r"); char vmarker[];
fgets(vmarker,,file); //读入文件第一行字符 long strLenth();
strLenth=strlen(vmarker); //字符串长度为8,字符串取入第一行末尾回车符’\n‘
cout<<"lenth of vmarker:"<<strLenth<<endl; //
printf("%s",vmarker); //输出字符串"endloop\n",由于最后一个字符为'\n',执行回车换行 printf("%c\n",fgetc(file)); //获取并输出test.txt文件第二行开头字符'e' fclose(file); }

文件字符读写函数fscanf()和 fgets() 比较的更多相关文章
- c语言中的文件格式化读写函数fscanf和fprintf函数
很多时候我们需要写入数据到文件中时都觉得很困扰,因为格式乱七八槽的,可读性太差了,于是我们就想有没有什么函数可以格式化的从文件中输入和输出呢,还真有.下面我将讲解一下fscanf和fprintf的强大 ...
- (转载)C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
http://blog.sina.com.cn/s/blog_61437b3b0102v0bt.html http://blog.csdn.net/chenwk891/article/details/ ...
- C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
由于最近经常使用到c语言中的读写文件,所以在此总结以下,方便以后查找. 在c中,文件操作都是由库函数来实现的,主要是分为读和写两种操作,以下详细讲解以下所有有关文件操作的邯郸乎的用法: //C++写入 ...
- 「C语言」文件的概念与简单数据流的读写函数
写完「C语言」单链表/双向链表的建立/遍历/插入/删除 后,如何将内存中的链表信息及时的保存到文件中,又能够及时的从文件中读取出来进行处理,便需要用到”文件“的相关知识点进行文件的输入.输出. 其实, ...
- C语言文件的读写
对文件的读和写是最常用的文件操作.在C语言中提供了多种文件读写的函数: 字符读写函数 :fgetc和fputc 字符串读写函数:fgets和fputs 数据块读写函数:freed和fwrite 格式 ...
- C文件读写函数介绍(转)
1.fopen() fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen实现三个功能:为使用而打开一个流,把一个文件和此 ...
- Linux C 文件输入输出函数 fopen()、getc()/fgetc()、putc()/fputc()、fclose()、fprintf()、fscanf()、fgets()、fputs()、fseek()、ftell()、fgetpos()、fsetpos() 详解
fopen(打开文件) 定义函数 FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开的文件路径及文件名,参 ...
- C语言lseek()函数:移动文件的读写位置
相关函数:dup, open, fseek 头文件:#include <sys/types.h> #include <unistd.h> 定义函数:off_t lseek ...
- python开发基础之字符编码、文件处理和函数基础
字符编码 为什么要有字符编码? 字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1". 一个文件用什么编码方式存储 ...
随机推荐
- 【英语】Bingo口语笔记(22) - Talk系列
talk back 顶嘴 talk somebody in to something 劝某人做某事 tal somebody out of something 劝某人不做某事
- 【英语】Bingo口语笔记(65) - 我也是系列
- java jodd框架介绍及使用示例
Jodd是一个普通开源Java包.你可以把Jodd想象成Java的"瑞士军刀",不仅小,锋利而且包含许多便利的功能.Jodd 提供的功能有: 提供操作Java bean, 可以 ...
- gcc/交叉编译
一.gcc编译的情况: 1.linux gcc包含的c/c++编译器,gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译. 2.linux gcc的应用: ...
- Bootstrap-select:美化原生select
官网:http://silviomoreto.github.io/bootstrap-select/ 1.下载zip 2.html代码 <select class="selectpic ...
- jquery easyui datagrid字段绑定问题
表字段为G_XIAN,生成PO对象时为private String GXian; datagrid字段必须写为gXian,否则数据无法正确绑定. 总结:不管VO对象中字段名称首字母是否大写,在data ...
- Informatica9.6.1在Linux Red Hat 5.8上安装遇到的有关问题整理_4
4.创建Integration Service后无法启动 1)错误日志: 2)解决办法: 进入Repository Service的属性页面,将其运行模式改成Normal.
- stitch image app (Qt)
result how to use? source code http://7qnct6.com1.z0.glb.clouddn.com/dropSelect.rar
- eclipse 编辑器的使用
随着所编辑的文件数目的增加以及在这些文件之间的快速切换,一个又一个文件的编码以及对编辑器会话(session)的管理将会变得非常复杂.这时,有几件事情你是可以做的. 通过使用键盘快捷键,你可以快速选择 ...
- 《C陷阱与缺陷》读书笔记
1. 词法“陷阱” = 不同于 == , 可以通过if( 1 == a )来避免 & | 不同于 && || 词法分析中的“贪心法” 编译器将程序分解成符号的方法是,从左到右一 ...