| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2746 人关注过本帖
标题:cin连续输入问题
只看楼主 加入收藏
nikkizeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-2-14
收藏
 问题点数:0 回复次数:12 
cin连续输入问题
如下代码:
char S[4], T[4];
cin >> S;
cin >> T;

分别输入"ABC"和"EFG"值后发现S会包含了T的内容.S="ABCEFG" T="EFG". 为什么会有这种情况?是不是buffer问题?
搜索更多相关主题的帖子: cin 输入 char 代码 
2006-05-29 18:15
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 
你是怎么输入的?

2006-05-29 18:20
nikkizeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-2-14
收藏
得分:0 

我就是连续用两次cin啊.结果有问题了.
cout << "Input S:" << endl;
cin>>S;
cout << "Input T:"<<endl;
cin>>T;


2006-05-29 18:23
BlueDreame
Rank: 1
等 级:新手上路
帖 子:545
专家分:2
注 册:2004-12-16
收藏
得分:0 
以下是引用nikkizeng在2006-5-29 18:15:00的发言:
如下代码:
char S[4], T[4];
cin >> S;
cin >> T;

分别输入"ABC"和"EFG"值后发现S会包含了T的内容.S="ABCEFG" T="EFG". 为什么会有这种情况?是不是buffer问题?

怎么可能?S只有4个元素,怎么变成6个?另外输入时应用回车分开。


2006-05-29 18:28
nikkizeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-2-14
收藏
得分:0 
以下是引用BlueDreame在2006-5-29 18:28:00的发言:

怎么可能?S只有4个元素,怎么变成6个?另外输入时应用回车分开。

debug时发现S的内容是六位,此时肯定是溢出了. 其实我有提示:
cout << "Input S:" << endl;
cin>>S;
cout << "Input T:"<<endl;
cin>>T;
抱歉,没写详细. 但是输入时是分开了的,不关事.


2006-05-29 18:41
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
原代码麻烦发上来

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-05-29 19:42
nikkizeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-2-14
收藏
得分:0 

我用这个版本还是有问题,而且当S字符串被全部转成大写后,T字符串也跟着转成大写了.感觉怎么像变成共用地址了?

#include <iostream>
#include <string.h>
#include <iomanip> //for cout setw()
#include <stdio.h>

using namespace std;

//Sequence S and T
char S[4], T[4];

int alph_len = 0, sta_len = 0;
int sLength = 0, tLength = 0;

void main()
{
//Input alphabet number
cout << ("Input alphabet number:\n");
cin >> alph_len;
cout << ("Input state number:\n");
cin >> sta_len;

//Input S & T values
cout << "Input S:" ;
cin>>S;
cout << "Input T:";
cin>>T;
sLength = strlen(S);
tLength = strlen(T);
strupr(S);
strupr(T);
}


2006-05-29 20:32
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
以下是引用nikkizeng在2006-5-29 20:32:00的发言:

我用这个版本还是有问题,而且当S字符串被全部转成大写后,T字符串也跟着转成大写了.感觉怎么像变成共用地址了?

#include <iostream>
#include <string.h>
#include <iomanip> //for cout setw()
#include <stdio.h>

using namespace std;

//Sequence S and T
char S[4], T[4];

int alph_len = 0, sta_len = 0;
int sLength = 0, tLength = 0;

void main()
{
//Input alphabet number
cout << ("Input alphabet number:\n");
cin >> alph_len;
cout << ("Input state number:\n");
cin >> sta_len;

//Input S & T values
cout << "Input S:" ;
cin>>S;
cout << "Input T:";
cin>>T;
sLength = strlen(S);
tLength = strlen(T);
strupr(S);这两句是搞什么的啊 函数调用吗?函数呢?
strupr(T);
}


不太明白,你什么意思啊!可能我学艺不精吧?不好意识啊


2006-06-14 16:46
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
strupr(T);
不是在做么

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-06-15 09:35
ysol
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-6-11
收藏
得分:0 
试试这个
int S;int T;
cin>>S>>T;
输入时用空白隔开。
2006-06-16 21:29
快速回复:cin连续输入问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027193 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved