c语言ret判断函数,c语言的问题,不太理解这个函数,大神给解释一下?

6486aaa934482c4a4fda846036311f3d.png

皈依舞

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维度大小的数组12345678int main(){    char buf[6],*restr;    int n=sizeof(buf);    restr=s_gets(buf,n);    printf("%s",restr);    return 0;}输入9个字符。打印前5个。输入4个字符。打印全部。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值