首页技术fgets在c语言中怎么用?fgets函数的作用

fgets在c语言中怎么用?fgets函数的作用

编程之家2026-06-29800次浏览

今天给各位分享fgets在c语言中怎么用的知识,其中也会对fgets函数的作用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

fgets在c语言中怎么用?fgets函数的作用

一个关于C语言中的fgets函数的问题

fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为:

char

*

fgets(char

*

string,

fgets在c语言中怎么用?fgets函数的作用

int

size,

FILE

*

stream);

参数说明:

fgets在c语言中怎么用?fgets函数的作用

string为一个字符数组,用来保存读取到的字符。

size为要读取的字符的个数。如果该行字符数大于size-1,则读到

size-1

个字符时结束,并在最后补充'

\0';如果该行字符数小于等于

size-1,则读取所有字符,并在最后补充

'\0'。即,每次最多读取

size-1

个字符。

stream为文件流指针。

【返回值】读取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL。因此我们不能直接通过fgets()的返回值来判断函数是否是出错而终止的,应该借助feof()函数或者ferror()函数来判断。

注意:fgets()与gets()不一样,不仅仅是因为gets()函数只有一个参数

FILE

*stream,更重要的是,fgets()可以指定最大读取的字符串的个数,杜绝了gets()使用不当造成缓存溢出的问题。

C语言里为什么fgets很少用

因为fgets函数只能输入字符串,而Scanf()能输入多种类型的数据,加上一般的C语言教材往往重视讲授原理,而对程序健壮性、异常处理等考虑不多,所以一般资料很少提及fgets函数。

scanf在获取用户输入的字符串时,遇到空格、制表符即终止,并在结尾自动加上”\0″。gets在获取用户输入字符串时,遇到空格、制表符不会终止,在结尾也会自动加上“\0”。

由于scanf和gets这两个函数不对输入的长度进行核查,即使用户输入超过了规定的buffer容量,函数也会接受输入,造成缓冲区溢出,程序崩溃。所以建议实际使用时最好用fgets函数来替代。

附上fgets函数的有关说明:

fgets函数原型:char

*fgets(char

*buf,

int

bufsize,

FILE

*stream);

参数:

1.

*buf:

字符型指针,指向用来存储所得数据的地址。

2.

bufsize:

整型数据,指明存储数据的大小。即每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。

3.

*stream:

文件结构体指针,将要读取的文件流。如为stdin,则从键盘读取。

返回值:

成功,则返回第一个参数buf;

在读字符时遇到End-of-File,则EOF被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;如果发生读入错误,ERROR被设置,返回NULL,buf的值可能被改变。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。

C语言读取文件,用fgetc和fgets哪个快

1、fgets和fgetc都是文件函数中的输入函数。其中第fgets是输入一个字符串,而fgetc则是输入一个字符。讲道理输入一个字符是比输入一个字符串快,但是也快不上零点几毫秒。

2、例如:

#include<string.h>

#include<stdio.h>

intmain(void)

{

FILE*stream;

charstring[100],c;

stream=fopen("fan.txt","r+");/*打开一个文本*/

fgets(string,99,stream);/*读取文本中第一行*/

printf("%s",string);/*在控制台显示该行文字*/

c=fgetc(stream);//读取文本第二行第一个字符

putchar(c);//在控制台显示该字符

fclose(stream);//关闭文件

return0;

}3.

如果是读写同样多的字符,fgets应当高一些.

因为它只读一次。即系统只调用一次。

你fgetc一方面加循环,另一方面,系统调用多次。

关于fgets在c语言中怎么用的内容到此结束,希望对大家有所帮助。

switch语句格式例子 C语言switch语句的特点html textarea换行(html纯文本怎么换行)