【C语言】如何读取带空格的字符串?

scanf()函数在读取字符时,识别到空格就会终止读取,那么如何读取带空格的字符串呢?

一、gets()(gets_s())

从标准输入(stdin)(指的是键盘输入)读取字符,并将它们作为 C 字符串存储到 str 中,直到达到换行字符或文件末尾。

即gets()函数会一直读取字符直到遇到换行符\n(回车)或文件末尾截至。

需要注意的是:在VS中gets()函数被替代为gets_s()。

int main()
{
	char str[100] = "\0";
	gets_s(str);
	puts(str);
	return 0;
}

 这里可以留一下gets_s()与fgets()的区别。

二、fgets()

 由上图我们发现,fgets()在输入时会保留键盘中输入的(\n)回车。于是在这里我测试了一下,结果如下:

 很明显他输出了两个换行符,这明显与我的预期不同,于是我发现puts()函数在输出时也会输出一个(\n)换行符,如果我把puts()换成printf(),那么就会只有一个fgets()的换行符了。

改用printf():

三、scanf()

scanf("%[^\n]", str);

scanf可以利用上述形势完成带有空格的字符串的输入。

猜你喜欢

转载自blog.csdn.net/2301_77112634/article/details/130948077
今日推荐