char * s_gets(char *st ,int n);
char * s_gets(char *st ,int n)
{
char *rel;
char *find;
rel=fgets(st,n,stdin);
if (rel)
{
find=strchr(st,'\n');
if (find)
*find='\0';
else
while (getchar()!='\n')
continue;
}
return rel;
}
s_gets是一个非常常用的字符串输入函数。它弥补了fgets的缺陷不足。
利用fgets先获得一个输入
如果输入不为空,则进入下面的操作。
strchr用于确定是否有‘\n’换行符,如果有则返回‘\n’的指针
把‘\n’换成‘\0’形成完整的字符串,适用于没有超过n的字符串
如果没有‘\n’,说明输入过长,缓冲区有一部分需要清理
这个时候已经有了n-1长度的字符串,结尾为‘\0’
剩下的通过getchar读取并释放,一直读取到‘\n’,也就是输入的末尾