C语言字符串函数s_gets()
作者:互联网
C语言字符串函数s_gets()
《C Primer Plus》335-336页
char* s_gets(char* st, int n) {
char* ret_val;
int i = 0;
ret_val = fgets(st, n, stdin);
if (ret_val) {
while (st[i] != '\n' && st[i] != '\0')
i++;
if (st[i] == '\n')
st[i] = '\0';
else
while (getchar() != '\0')
continue;
}
return ret_val;
}
有些时候为了避免换行符储存在字符串中,字符串中有换行符可能会带来一些麻烦,就创建了s_gets()函数,其作用是读取整行输入并用空字符代替换行符,或读取一部分输入,并丢弃其余部分
如果fgets成功读取到了字符串则进入if判断语句,通过循环找出字符串中的换行符或空字符
fgets函数读到换行符时就会停止读入字符,如果找到换行符,if语句就会将其变为空字符并返回字符串,若while循环读取到了空字符,由于空字符象征着字符串的结束,此时需要丢弃输入行的余下字符。
因为输入行中多出来的字符会被留在缓冲区中,成为下一次读取语句的输入,假设下一条语句要读取一个char类型的值,就可能导致程序崩溃,丢弃输入行余下的字符保证了读取语句和键盘输入同步
以上文字解析摘自知乎
标签:gets,读取,空字符,st,C语言,ret,字符串,换行符 来源: https://blog.csdn.net/m0_50835284/article/details/120444725