学过字符串,我们都知道当输入一串带空格的字符
(通俗的说,就是英语中由一个个单词组成的一句话)时,举个例子,比如my name is aeiou
如果你用scanf直接输入的话,
像这样
scanf("%s",str);
结果是这样的…
my
由运行结果我们可以看出,它遇到空格就停止读入了。
So 我们一般都选择用gets函数来读入一个带空格的字符串
就像这样
gets(str);
运行出来是这样的
my name is aeiou
这是因为gets可以读入空格,遇到回车才会停止;而scanf遇到空格、回车和Tab键都会认为输入结束,所以它是不能接收空格的。
但是我们都知道gets是不安全的(尽管我现在还没有遇到过这种情况,但是C++认为gets是不安全的)
So 如果你想用scanf输入一个带空格的字符串的话,也不是不可以,下面就来说一下怎么用。
我们可以这样写
scanf("%[^\n]",str);
这样的话运行结果是
my name is aeiou
不要问为什么,记住这个[^\n]就行了,如果实在想知道的话可以去搜百度。
但是你会发现一个问题
请看这个代码(这是一个统计元音字母的题的完整代码)
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
getchar();
while(n--)
{
361




被折叠的 条评论
为什么被折叠?



