| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1336 人关注过本帖
标题:[求助]初学者一个简单的程序错了(是关于字符串处理的)
只看楼主 加入收藏
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
 问题点数:0 回复次数:25 
[求助]初学者一个简单的程序错了(是关于字符串处理的)

#include<iostream>
using namespace std;
void main()
{
char str1[10];
char str2[4];
int i,j=0;
cout<<"请输入两个字符串:"<<endl;
cin>>str1>>str2;
for(i=0;;i++)
if(str1[i]=='\0')
break;
while(str2[j])
str1[i++]=str2[j++];

cout<<"连接后的两个字符串是:"<<str1<<endl;
}
程序编译时没有错误,但运行时出现了错误。程序要实现的功能是实现两个字符串的连接。

运行的结果如下:

请输入两个字符串:

heewe dkw

连接后的两个字符串是:heewedkw烫烫?

反正后面出现了乱码。

麻烦大家看一下,不胜感激!!!!!

搜索更多相关主题的帖子: 字符 std 
2006-04-20 22:01
freshman42
Rank: 1
等 级:新手上路
威 望:1
帖 子:94
专家分:0
注 册:2005-12-4
收藏
得分:0 

#include<iostream>
using namespace std;
void main()
{
char str1[10];
char str2[4];
int i,j=0;
cout<<"请输入两个字符串:"<<endl;
cin>>str1>>str2;
for(i=0;;i++)
if(str1[i]=='\0')
break;
while(str2[j])
str1[i++]=str2[j++];
str1[i]=NULL; //加上这一句;

cout<<"连接后的两个字符串是:"<<str1<<endl;
}


2006-04-20 22:08
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
更准确的是让它等于'\0'.

=×&D o I p R e E n C g T l X&×=
2006-04-20 23:46
tcsoftware
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2005-8-6
收藏
得分:0 
for(i=0;;i++)
怎么有2个分号啊

小郭小郭我爱你排山倒海支持你小六小六我爱你七舅姥爷支持你人见人爱白展堂重情重义好儿郎湘玉湘玉如花似玉
2006-04-21 04:21
freshman42
Rank: 1
等 级:新手上路
威 望:1
帖 子:94
专家分:0
注 册:2005-12-4
收藏
得分:0 

看书吧


2006-04-21 06:11
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 

这时字符数组容易产生越界的问题。当我输入的字符串长度超过了定义的字符串长度时,不能产生预想的结果,请问这应该如何控制?
使用字符数组来操作字符串时,给人明显的不便就是数组容易产生越界的危险,麻烦哪位大虾指点一下怎样能更好的使用字符数组来处理字符串,还有没有其他的方法来处理字符串???


英者自知,雄者自胜
2006-04-21 13:38
hmilyalex
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-4-21
收藏
得分:0 
四楼的应该去看书了

教室--食堂--床
2006-04-21 14:30
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
使用STL库的string模板类。它可以解决这个问题。

=×&D o I p R e E n C g T l X&×=
2006-04-21 14:41
wangp273
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-4-6
收藏
得分:0 
#include<iostream>
#include<string>
using namespace std;
int main()
{string s1,s2;
cout<<"请输入两个字符串:"<<endl
cin>>s1>>s2;
cout<<s1+s2<<endl;
return 0;
}
这样就好了啊

2006-04-21 15:23
风の影子
Rank: 2
等 级:新手上路
威 望:3
帖 子:664
专家分:0
注 册:2005-5-19
收藏
得分:0 
以下是引用tcsoftware在2006-4-21 4:21:00的发言:
for(i=0;;i++)
怎么有2个分号啊

这个问题,哎
应该在学C的时候就应该涉及到吧
C的FOR循环语句都有两个分号的
这个之所以两个一起出现是因为中间的条件限制语句为空,也就是没有给出条件限制……

2006-04-21 20:37
快速回复:[求助]初学者一个简单的程序错了(是关于字符串处理的)
数据加载中...
 
   



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

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