C/C++教程

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类型的值,就可能导致程序崩溃,丢弃输入行余下的字符保证了读取语句和键盘输入同步

以上文字解析摘自知乎

这篇关于C语言字符串函数s_gets()的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!