fgets函数自己的理解

gets函数容易发生越界错误,已经看到好多书、文章提到这一点。在写输入时就采用fgets函数,发现函数虽小,没理解透还是问题多多。

char  *fgets(char *s, int n, FILE *stream);

问题1:FILE *stream 参数误用STDIN_FILENO

代码:

将输入打印出来,执行这个程序:


分析:STDIN_FILENO是头文件<unistd.h>中定义的宏,数据类型是int,属于系统调用接口中标准输入的文件描述符,是没有缓存的I/O。

    fgets函数中第三个参数类型为FILE *,FILE是一个数据结构用于访问一个流。stdin,stdout,stderr都是指向FILE结构的指针。

修改代码fgets(s1,10,stdin);再运行:


输入fuck,输出fuck。


问题2:输入字符串长度小于参数n

代码:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值