为啥不能用scanf读入一个含有空格的字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥不能用scanf读入一个含有空格的字符串相关的知识,希望对你有一定的参考价值。

scanf遇到以下情况结束读入
1.white
chars
空格,回车,制表符
2.到达%m[d/f/c/s/e/u]指定的宽度m
3.出现非法字符,对于%d来说,非digit就是非法字符,如:
'a
'
要使字符串读入white
chars,c中使用gets,gets是专门处理字符串读入的函数,没有跳white
chars的限制;c++中使用cin.get或者cin.getline
或者用
scanf("%[^\n]",s);读入句子到s中,这个格式化……哎
都忘了,罪过
罪过啊
参考技术A 因为scanf是以空白符(空格、制表符、换行等等)为结束标志的,当遇到空白符是就会结束一次输入,如果你需要读取空格的话可以使用gets或者getchar本回答被提问者采纳

cin 不能直接读入空格,可以用getline(PAT统计字符数)

#include <iostream>
#include <cstring>
using namespace std;

int main(){
    string str;
    int a[200] = {0};
    
//    cin >> str;
    getline(cin, str);
    for(int i = 0; i < str.length(); i++){
        if(str[i] >= ‘a‘ && str[i] <= ‘z‘)
            a[str[i]]++;
        if(str[i] >= ‘A‘ && str[i] <= ‘Z‘)
            a[str[i] + 32]++;            
    }
    int max = 90;
    for(int i = ‘a‘; i <= ‘z‘; i++)
        if(a[max] < a[i])
            max = i;
    cout << (char)max << " " << a[max];
    return 0;
}

以上是关于为啥不能用scanf读入一个含有空格的字符串的主要内容,如果未能解决你的问题,请参考以下文章

c++第二遍scanf读入问题

c语言中怎样用scanf()读入带空格的字符串

C语言用如何用scanf输入带有空格的字符串

统计单词

C 不能输入带空格的字符串

C语言用如何用scanf输入带有空格的字符串