其他分享
首页 > 其他分享> > C语言字符串函数s_gets()

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