在刷pat的时候遇到一道编程题,自己重新实现下面的参考代码时,对第五行代码gets(s) 改成cin>>s,但得出结果不一样,因此记录一下这两种用法的不同。
#include<cstdio>
#include<cstring>
int main(){
char s[90];
gets(s);//cin>>s;
int len = strlen(s), r = 0, h = 0;
char ans[90][90];
for (int i = 0; i < len; i++){
if (s[i] != ' '){
ans[r][h++] = s[i];
}
else{
r++;
h = 0;
}
}
for (int i = r; i >= 0; i--){
printf("%s", ans[i]);
if (i > 0) printf(" ");
}
return 0;
}
下面通过两个例子说明一下此cin和gets()区别:
#include<iostream>
using namespace std;
int main()
{
char str[20];
cin>>str;
cout<<str<<endl;
return 0;
}
输入:abc abc
输出:abc
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[20];
gets(str);
cout<<str<<endl;
return 0;
}
输入:abc abc
输出:abc abc
结论:cin不接受空格,TAB等键的输入,遇到这些键,字符串会终止,而gets()则接受连续的输入,包括空格,TAB