文件字符读写函数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". 一个文件用什么编码方式存储 ...
随机推荐
- ORACLE RAC集群硬件资源管理与单节点的区别
硬件资源是由OS kernel管理的,应用软件是不能直接访问硬件的,必须通过OS kernel提供的API接口间接访问,OS kernel 除了要完成用户的请求,还通过进程调度等机制来控制多进程对资源 ...
- Java中sychronized方法与sychronized块区别
一.举几个栗子
- JBPM4之decision节点:1、好学生 | 坏学生
JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流程图的插件 JBPM4入门——3.JBPM4开发环境的搭建 JBPM4入门—— ...
- library cache lock和cursor: pin S wait on X等待
1.现象: 客户10.2.0.4 RAC环境,出现大量的library cache lock和cursor: pin S wait on X等待,经分析是由于统计信息收集僵死导致的.数据库在8点到9点 ...
- bootstrap-datetimepicker在经过GC(Google Closure Compiler)压缩后无法使用的解决方案
将压缩级别由simple改成whitespace 问题就是这样之后压缩后的文件大了很多 <?xml version="1.0"?> <project name=& ...
- Windows 和 Linux 的IPC API对应表
原文出处:http://blog.csdn.net/zhengdy/article/details/5485472 ...
- Android Service 服务
一. Service简介 Service是android 系统中的四大组件之一(Activity.Service.BroadcastReceiver.ContentProvider),它跟Activi ...
- swfupload 参数说明
一.配置参数对象中的常用属性及说明 属性 类型 默认值 描述 upload_url String 处理上传文件的服务器端页面的url地址,可以是绝对地址,也可以是相对地址,当为相对地址时相对的是当 ...
- synchronized作用范围及用法
1.多线程的同步: 1.1.同步机制: 在多线程中,可能有多个线程试图访问一个有限的资源,必须预防这种情况的发生.所以引入了同步机制:在线程使用一个资源时为其加锁,这样其他的线程便不能访问那个资源了, ...
- 恢复SD卡错删数据
对于众多米粉来说,手机里存储的很多资料都非常宝贵,如果不小心删除了,想要重新收集这些资料就显得非常困难.有道是千金易得,数据无价,特别是一些珍贵照片之类的充满回忆的数据,丢失了甚至会抱憾 ...