鱼C论坛

 找回密码
 立即注册
查看: 1828|回复: 6

[已解决]关于自定义的输入函数的一个疑问

[复制链接]
发表于 2017-12-5 22:30:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
char *s_gets(char *st,int n)
{
    char *ret_val;
     int i =0;
    ret_val=fputs(ret_val,n,stdin);
    if(ret_val)
    {
        while(st[i]!='\n'&&st[i]!='\0')
            i++;
        if(st[i]=='\n')
            st[i]==='\0';
        else
            while(getchar()!='\n')
                continue;
    }
    return ret_val;
}

为什么这里的条件是st[i]!='\n'&&st[i]!='\0'呢?  字符串输入后有几种情况,1.正好输入满,这样 "ABCDE\0"\n    ,只需要判断有没有\0就行了
2.如果溢出,只会输入"ABCD"  后面的\0都没有,这样不是就不符合字符串的要求吗?
3.输入内容不足,"AB\0"\n     这样不是也只需要判断是否是\0就可以了吗?
为什么要判断&&st[i]!='\n'呢
最佳答案
2017-12-6 11:23:30
御笔剑客 发表于 2017-12-6 10:51
是输入了ABC后如果小于输入的长度,它会让我们继续往下输入是这样吗?
比如我输入长度定义为6,我输入AB ...

这要看你对读取的操作了,你当然可以设置只有输入某些字符情况下才结束输入,并不一定得是回车
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-6 06:47:37 From FishC Mobile | 显示全部楼层
字符串st中可能有回车键在中间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-6 10:51:06 | 显示全部楼层
BngThea 发表于 2017-12-6 06:47
字符串st中可能有回车键在中间

是输入了ABC后如果小于输入的长度,它会让我们继续往下输入是这样吗?
比如我输入长度定义为6,我输入ABC后按下回车,他会让我继续输入文字,是这样吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-6 11:23:30 | 显示全部楼层    本楼为最佳答案   
御笔剑客 发表于 2017-12-6 10:51
是输入了ABC后如果小于输入的长度,它会让我们继续往下输入是这样吗?
比如我输入长度定义为6,我输入AB ...

这要看你对读取的操作了,你当然可以设置只有输入某些字符情况下才结束输入,并不一定得是回车
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-6 17:30:59 | 显示全部楼层
BngThea 发表于 2017-12-6 11:23
这要看你对读取的操作了,你当然可以设置只有输入某些字符情况下才结束输入,并不一定得是回车

字符串st中可能有回车键在中间,这句话是我理解的那样吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-6 19:52:08 From FishC Mobile | 显示全部楼层
御笔剑客 发表于 2017-12-6 17:30
字符串st中可能有回车键在中间,这句话是我理解的那样吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-6 21:36:04 | 显示全部楼层
你可能理解错了   回车也是一个字符 只不过 很多记事本 帮我们隐藏掉了   如果你看看原始字符串 就知道
代码的意思是  如果中间按了回车 或者是 读到了字符串尾  就跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 22:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表