fgets和gets的区别.docx

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
fgets和gets的区别

fgets函数 从流中读一行或指定个字符,  原型是char *fgets(char *s, int n, FILE *stream);  从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。  形参注释:*string结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针  例:如果一个文件的当前位置的文本如下  Love ,I Have  But ........  如果用   fgets(str1,4,file1);  则执行后str1=Lov,读取了4-1=3个字符,  而如果用   fgets(str1,23,file1);  则执行str=Love ,I Have,读取了一行(不包括行尾的n)。 序例: #include string.h  #include stdio.h  int main(void)  {  FILE *stream;  char string[] = This is a test;  char msg[20];  /* open a file for update */  stream = fopen(DUMMY.FIL, w+);  /* write a string into the file */  fwrite(string, strlen(string), 1, stream);  /* seek to the start of the file */  fseek(stream, 0, SEEK_SET);  /* read a string from the file */  fgets(msg, strlen(string)+1, stream);  /* display the string */  printf(%s, msg);  fclose(stream);  return 0;  }  fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加\0,并以str作为函数值返回。------------------------------------------------------------------------------------在C语言,常用的同类函数还有fscan()和gets(),不过这两种函数都有其缺点,或者可以说是制约性。fscan()函数不能读取带有空格的字符串,当字符串中含有空格时,函数只能读取空格之前的字符串,空格之后的全部忽略。gets()函数虽然可以操做带有空格的字符串,不过容易引起溢出,因为C语言是将字符串当做一种数组操做的,既然是数组,就有长度,如果gets ()函数读取的字符串长度大于被赋值数组的长度,就会引起溢出,而且新版的GCC已经不能正确编译gets()函数了,会报错。fgets()函数的基本用法为:fgets(char * s,int size,FILE * stream);括号中,第一个参数为将被赋值的数组名,这里需要注意的是,其中不用写数组名称后面的方括号以及其中的数组长度。第二个参数是将要读取字符串的长度,这里需要注意的是,这里长度的数值是“字符串实际长度+1”,加1是因为,字符串最后面还有一个/0位。最后一个参数为输入设备或者变量。一般情况下,我们都是从键盘输入,也就是stdin。(从文件读取的这里暂不说明)OK!现在举一个例子!下面的这段代码作用在于,属于一个字符串,然后计算出字符串中单词的个数。#includestdio.hmain(){ char dia[80]; char t,m; int i=0,num=0,flag=0; fgets(dia,80,stdin); fputs(dia,stdout); for (i=0;dia[i]!=’\0′;i++) { if (dia[i]==’ ‘) flag=0; else if (flag==0) { flag=1; num++; } } printf(%d\n,num);}这段代码的工作原理是,使用一个用于标示的变量flag,还有一个用于统计单词个数的变量num。然后逐一读取字符串中的每一个字符,当遇到字母时flag的值为1,当遇到空格时,flag的值为0

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档