C语言如何输入带空格的字符串?

两种方法

  • 方法一
  • 方法二
  • 2022/11/16 补充

方法一

使用stdio函数库提供的char函数,这里我们在MSDN离线版上学习一下其用法
C语言如何输入带空格的字符串?_第1张图片

可以看到,gets()用于从标准输入流读入一个整行(以’\n’或EOF)结束,写入ptr指向的字符数组,并返回这个指针;出错或遇到文件结束时则返回NULL。行末的’\n’从流中取出,但不写入数组。gets()不检查被写入的数组大小。

所以我们可以很容易写出如下代码:

#include
int main()
{
	char str[25] = { 0 };
	gets(str);
	printf("%s\n", str);
	return 0;
}

实现后:
C语言如何输入带空格的字符串?_第2张图片

方法二

这里使用一个scanf函数提供的“%[]”格式来输入,这个格式可以让我们进行多字符的输入,同时决定输入结束的字符,只需要使用**^+我们需要停止的字符**下面为大家实际操作一波:

#include
int main()
{
	char str[25] = { 0 };
	scanf("%[^\n]", str);
	printf("%s\n", str);
	return 0;
}

实现后:
C语言如何输入带空格的字符串?_第3张图片

我们甚至可以凭借%[ ^EOF ]来控制字符串的持续输入

如果对你有帮助的话,动动小手点个赞可以嘛,谢过各位啦~


2022/11/16 补充

我前天面试栽在这儿了,一个acm模式的题目,接口我写的出来,但是却没法输入一个带空格的字符串,实在荒唐(我巨想去的公司和部门);现在做c++的补充并整体做常规总结,希望兄弟们别犯和我一样的蠢错,这些简单的问题实在不应该出错,并且作为一个C程序员,这些是非常基本必须掌握的。

  • C语言

可以使用gets,但是gets不限制写入大小,非常不安全,不使用

  1. sranf+正则格式 scanf(“%[^\n]”,str)
    C语言如何输入带空格的字符串?_第4张图片

  2. fgets:fgets(str,sizeof(str),stdin)
    C语言如何输入带空格的字符串?_第5张图片

  • C++
  1. 字符串string类型对象,使用getline(cin,string)
    C语言如何输入带空格的字符串?_第6张图片

  2. 字符数组类型,使用cin.get(str,str_size)
    C语言如何输入带空格的字符串?_第7张图片

你可能感兴趣的:(字符串,输入输出,C语言小知识,c语言,c++)