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[strlen(key)]='\0'或者key[n-1]='\0'
2、还有种程序经常使用的方法:key[strlen(key-1)]=0x00;
3、与gets相比使用这个好处是:读取指定大小的数据,避免gets函数从stdin接收字符串而不检查它所复制的缓存的容积导致的缓存溢出问题。
参考资料来源:百度百科-fgets
2024-07-18 广告
while(fgets(buf, 100, stdin)) {
printf("%s", buf);
}
注意:buf中会有\n
返回值为buf的指针。为空就表示EOF文件末尾。
char * fgets ( char * str, int num, FILE * stream );
输入成功时,返回 char 型指针,指向 读入的字符串内容,含换行键(gets 类似,但不含换行键)。
输入失败时,返回 NULL。(与此同时 ,自动设置了 feof, ferror 的状态标志)。
那怎么才算输入错误,能具体打出来吗?
谢谢