关于自定义的输入函数的一个疑问
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!='\n'&&st!='\0')
i++;
if(st=='\n')
st==='\0';
else
while(getchar()!='\n')
continue;
}
return ret_val;
}
为什么这里的条件是st!='\n'&&st!='\0'呢?字符串输入后有几种情况,1.正好输入满,这样 "ABCDE\0"\n ,只需要判断有没有\0就行了
2.如果溢出,只会输入"ABCD"后面的\0都没有,这样不是就不符合字符串的要求吗?
3.输入内容不足,"AB\0"\n 这样不是也只需要判断是否是\0就可以了吗?
为什么要判断&&st!='\n'呢 字符串st中可能有回车键在中间 BngThea 发表于 2017-12-6 06:47
字符串st中可能有回车键在中间
是输入了ABC后如果小于输入的长度,它会让我们继续往下输入是这样吗?
比如我输入长度定义为6,我输入ABC后按下回车,他会让我继续输入文字,是这样吗? 御笔剑客 发表于 2017-12-6 10:51
是输入了ABC后如果小于输入的长度,它会让我们继续往下输入是这样吗?
比如我输入长度定义为6,我输入AB ...
这要看你对读取的操作了,你当然可以设置只有输入某些字符情况下才结束输入,并不一定得是回车 BngThea 发表于 2017-12-6 11:23
这要看你对读取的操作了,你当然可以设置只有输入某些字符情况下才结束输入,并不一定得是回车
字符串st中可能有回车键在中间,这句话是我理解的那样吗? 御笔剑客 发表于 2017-12-6 17:30
字符串st中可能有回车键在中间,这句话是我理解的那样吗?
是 你可能理解错了 回车也是一个字符 只不过 很多记事本 帮我们隐藏掉了 如果你看看原始字符串 就知道
代码的意思是如果中间按了回车 或者是 读到了字符串尾就跳出循环
页:
[1]