为啥不能用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读入一个含有空格的字符串的主要内容,如果未能解决你的问题,请参考以下文章