文件字符读写函数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". 一个文件用什么编码方式存储 ...
随机推荐
- UVa572 - Oil Deposits
解题思路:好久没写搜索了,练练手,陶冶情操.不多说,直接贴代码: #include<cstdio> #include<cstring> #include<algorith ...
- MAC OSX 下安装 CTAGS
由于本子跟风换了骚货MBP,因而开发要迁移到MAC OSX下,mac os 下的ctags不一样,所以需要自己编译一个 Lion内置了ctags,但是不我所需要,因此得在网上去弄,最新的版本是 5 ...
- Smarty笔记 和20个常用的变量操作符
什么是Smarty变量操作符php模板引擎smarty内置的一些操作函数,我们称之为变量操作符,变量操作符可用于操作变量,自定义函数和字符.(跟我PHP中常用的PHP内部函数类似)他可以帮助我们完成很 ...
- linux ubuntu 安装jdk
junluobj@junluobj:~$sudo mkdir /usr/lib/jvmwww.linuxidc.com@linuxidc:~$tar zvxf jdk-8u20-linux-x64.t ...
- 恢复SD卡错删数据
对于众多米粉来说,手机里存储的很多资料都非常宝贵,如果不小心删除了,想要重新收集这些资料就显得非常困难.有道是千金易得,数据无价,特别是一些珍贵照片之类的充满回忆的数据,丢失了甚至会抱憾 ...
- Dispatcher
Dispatcher是guava EventBus的事件分发器. Dispatcher是抽象类, 抽象方法: abstract void dispatch(Object event, Iterator ...
- Struts2配置细节
struts.xml中 action中配置 如果是返回到网页则 /AA/XX.jsp 如果是返回到action则看namespace然后传参数,如果是同一个namespace则直接写上返回的actio ...
- std::vector数据复制
std::vector<boost::shared_ptr <ITEM> > srcItemList; // 数据源 std::vector<ITEM> des ...
- mysql 用户名密码登陆不上
问题1:刚安装完mysql,设置了用户名密码root,登陆OK的,后来再连怎么也连不上了 操作步骤: 输入:mysql -uroot -proot 提示:ERROR 1045 (28000): Acc ...
- java中子类与基类变量间的赋值
Java中子类与基类变量间的赋值 子类对象可以直接赋给基类变量. 基类对象要赋给子类对象变量,必须执行类型转换, 其语法是: 子类对象变量=(子类名)基类对象名; 也不能乱转换.如果类型转换失败Jav ...