本文目录
- c语言fgets里怎么换行
- C语言中,库函数fgets(str,n,fp)的功能是________
- c语言中fgets的返回值类型
- C语言里fgets函数怎么用
- c语言的问题,不太理解这个函数,大神给解释一下
- C语言里为什么fgets很少用
- C语言中fgets和fgetc的区别
c语言fgets里怎么换行
fgets函数功能为从指定的流中读取数据,每次读取一行。其原型为:char *fgets(char *str, int n, FILE *stream);从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止。楼主没有说清具体要执行的规则,只有一个例子。如果是固定的第一行以及从此行中截取前三个字符为一行,这就比较容易处理。下面是程序的代码和文件内容以及运行截图:#includeint main(){ FILE *fp; char s; fp=fopen("test.txt","r"); fgets(s,4,fp); printf("%s\n",s); while(!feof(fp)) { fgets(s,300,fp); printf("%s",s); } return 0;}
C语言中,库函数fgets(str,n,fp)的功能是________
【答案】:Bfgts函数的作用是从指定的文件读入―个字符串。fgts(str,,fp);中的为要求得到的字符的个数,但只从fp指向的文件输入-1个字符,然后在最后加―个“\0”字符,因此得到的字符串共有个字符。
c语言中fgets的返回值类型
1、如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。如果发生错误,返回一个空指针。
在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则stream保持原来的内容,返回NULL;
2、如果发生读入错误,error指示器被设置,返回NULL,stream的值可能被改变。
如果文件中的该行,不足n-1个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过n-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。
函数成功将返回stream,失败或读到文件结尾返回NULL。因此不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。
扩展资料
函数使用:
1、同时可以用作键盘输入:fgets(key,n,stdin)且还必须:key=’\0’
2、还有种程序经常使用的方法:key=0x00;
3、与gets相比使用这个好处是:读取指定大小的数据,避免gets函数从stdin接收字符串而不检查它所复制的缓存的容积导致的缓存溢出问题。
C语言里fgets函数怎么用
fgets(由文件中读取一字符串)\x0d\x0a 表头文件 \x0d\x0a include
c语言的问题,不太理解这个函数,大神给解释一下
fgets函数原型char *fgets(char *buf, int bufsize, FILE *stream);参数*buf: 字符型指针,指向用来存储所得数据的地址。bufsize: 整型数据,指明存储数据的大小。*stream: 文件结构体指针,将要读取的文件流。含义:从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋’\0’),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。
----------------------------以上说明,引用百度知道,“修者世界 ”的发言,不是本人编著
下面我对你这个代码补充说明:
stdin是C语言中标准输入流,一般用于获取键盘输入
所以代码 ret_val = fgets(st, n, stdin); 这里意思:
从键盘读入n位字符+结束’\0’存放到st数组中。
而判断if (ret_val){。。。。这里的意思:
当键盘输入的字符大于一次读取缓存空间st时(ret_val 以‘\0’结尾),通过 getchar()截取掉键盘缓冲区剩余字符。并返回 ret_val 。
当键盘输入的字符小于一次读取缓存空间st时(ret_val 以回车‘\n’结尾),
将结尾的’\n’替换成’\0’,并返回ret_val 。
所以总结:
char * s_gets(char *st, int n)的意思就是: 传参数组指针st、数组大小n。返回键盘输入的字符串前n-1个字符。
比如,main函数调用,定义6维度大小的数组
int main(){ char buf,*restr; int n=sizeof(buf); restr=s_gets(buf,n); printf("%s",restr); return 0;}
输入9个字符。打印前5个。
输入4个字符。打印全部。
C语言里为什么fgets很少用
因为fgets函数只能输入字符串,而Scanf()能输入多种类型的数据,加上一般的C语言教材往往重视讲授原理,而对程序健壮性、异常处理等考虑不多,所以一般资料很少提及fgets函数。scanf在获取用户输入的字符串时,遇到空格、制表符即终止,并在结尾自动加上”\0″。gets在获取用户输入字符串时,遇到空格、制表符不会终止,在结尾也会自动加上“\0”。由于scanf和gets这两个函数不对输入的长度进行核查,即使用户输入超过了规定的buffer容量,函数也会接受输入,造成缓冲区溢出,程序崩溃。所以建议实际使用时最好用fgets函数来替代。附上fgets函数的有关说明:fgets函数原型:char*fgets(char*buf,intbufsize,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语言中fgets和fgetc的区别
1、fgets和fgetc都是文件函数中的输入函数。其中第fgets是输入一个字符串,而fgetc则是输入一个字符。
2、例如:
#include 《string.h》#include 《stdio.h》int main(void){ FILE *stream; char string,c; stream = fopen("fan.txt", "r+"); /* 打开一个文本*/ fgets(string,99, stream); /* 读取文本中第一行 */ printf("%s", string); /* 在控制台显示该行文字 */ c = fgetc(stream);//读取文本第二行第一个字符 putchar(c); //在控制台显示该字符 fclose(stream); //关闭文件 return 0;}