C++使用gets时出现了问题

#include<iostream>#include<cstring>usingnamespacestd;chars[200];intmain(){intn;cin>>n... #include<iostream>
#include<cstring>
using namespace std;
char s[200];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) gets(s);
}
当输入上面这段代码时,输入的字符串只有n-1个,这到底是为什么?

有没有解决方案呢?
有没有能读取空格和tab键,遇到回车符停止的除了gets的其他函数?
展开
 我来答
金色潜鸟
2014-02-12 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5731万
展开全部
char s[200]; 只能放最后1个字符串。
其他函数 fgets(。。。,stdin) 可代替gets, 只是 读入结果中 含行末的 '\n'
===============================
gets 一次读一行,读取空格和tab键,读到 '\n' 为止。
行数 n < 30; 每行不超过199 个字符,数组大小用
char s[30][200];
for(int i=1;i<=n;i++) gets(s[i-1]);
读入 n 行。存于 s[0] 到 s[n-1]。
White_MouseYBZ
2014-02-12 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6684万
展开全部
肯定是n个,不可能是n-1个。你看到了n-1个是因为把你输入n时的回车符当一个字符串了。
在cin >> n;后加一句fflush(stdin);,把遗留在缓冲区中的所有东西都冲掉,就OK了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpucash
2014-02-13 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:972万
展开全部
是n/2个吧
因为回车也是字符,并且不会被gets吸收,一次输入相当于两次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
veket的小号
2014-02-12 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:4000万
展开全部
cin不是有getline方法........
for的 n次循环 都 输入到同一个数组 最后 结果就是 字符数组中只有最后一次输入的字符串....
也许你是想弄个string 数组吧.....
追问
cin>>n;后面应该可以用getchar();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式