0
点赞
收藏
分享

微信扫一扫

对C Primer Plus 自定义函数 s_gets 的自我理解

开源分享 2022-03-27 阅读 54
c语言

C Primer Plus 自定义函数 s_gets


#代码源码

char *s_gets(char *st,int n)
 {     char *ret_val; //
       char *find;
       ret_val = fgets(st,n,stdin);//从stdin流中获得字符
       if(ret_val)
       {
          find = strchr(st,'\n'); //如果获得的字符串是小于n-1的,找到'\n'
            if(find)               
             *find = '\0';   //把'\n'换成'\0'
             else
                while(getchar()!='\n') // 把缓冲区剩余的字符刷新掉
                     continue;
       }
          return ret_val;
 
 }  

代码分析

因为fgets 只能获取n-1个字符,当读取n-1个字符或者读取到换行符,会就会停止,
当输入的字符大于n时,要用wile(getcahr()!= ‘\n’),处理处理留在缓冲区中的字符,
使用一个 string.h 库中的strch来快速找到一个字符(’\n’),并把位置返回给 find 指针

举报

相关推荐

0 条评论