关于s_gets函数的理解

例如:

          

char *s_gets(char *st, int n)
{
char *ret_val;
int i = 0;
ret_val = fgets(st, n, stdin);
if (ret_val)//当ret_val等于空字符时,ret_val值为0,测试条件为假,循环结束
{
while (st[i]!='\n'&&st[i]!='\0')
{
i++;
}
if (st[i] == '\n')
st[i] == '\0';//将'\n'替换为'\0'
else
{
while (getchar()!='\n')//接受空字符,但是并不存储
{
continue;
}
}
}
return ret_val;
}

函数目的是为了读取最大字符数或第一个换行符为止,舍弃了之后多输入的内容进入缓冲区,保证语句与键盘的同步

猜你喜欢

转载自www.cnblogs.com/mingstatebird/p/12208899.html