| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1338 人关注过本帖
标题:[求助]初学者一个简单的程序错了(是关于字符串处理的)
只看楼主 加入收藏
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
可以用动态分配撒
每当以前使用的数组位置用完就重新分配2倍的内存

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-04-22 13:41
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
呵呵11楼的哥们
这个我们没学
老师也没说过
你说的那个怎么做
是不是判断一下
不够的话变2倍在付值啊
那个有没有什么有趣的地方
帮忙做一个

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-04-23 18:51
无限忧伤
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-4-5
收藏
得分:0 

#include<iostream.h>
#include"stdio.h"
void main()
{
char str1[10];
char str2[4];
int i,j=0;
cout<<"请输入两个字符串:"<<endl;
gets(str1);
gets(str2);
for(i=0;;i++)
if(str1[i]=='\0')
break;
while(str2[j])
{str1[i]=str2[j];i++;j++;}
str1[i]='\0';
cout<<"连接后的两个字符串是:"<<str1<<endl;
}


我觉得这样做比较好.


2006-04-23 22:23
无限忧伤
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-4-5
收藏
得分:0 

报告!9楼有错.
改正如下:
#include<iostream.h>
#include<afx.h>

void main()
{cout<<"请输入两个字符串:"<<endl;
char a[100],b[100];
gets(a);
gets(b);
CString s1,s2;
s1=a;s2=b;
cout<<s1+s2<<endl;

}


2006-04-23 22:38
freshman42
Rank: 1
等 级:新手上路
威 望:1
帖 子:94
专家分:0
注 册:2005-12-4
收藏
得分:0 
以下是引用wangp273在2006-4-21 15:23:00的发言:
#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-23 22:46
无限忧伤
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-4-5
收藏
得分:0 

我用Vc++6.0的win32 console运行楼上的时报错了啊?咋回事呢?


2006-04-23 22:52
xby20022002
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-3-17
收藏
得分:0 
处理字符串问题我一般都喜欢用指针来做,很方便,代替数组

2006-04-23 23:06
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
以下是引用freshman42在2006-4-23 22:46:00的发言:

没错啊

#include<iostream>
#include<string>
using namespace std;
int main()
{string s1,s2;
cout<<"请输入两个字符串:"<<endl;
cin>>s1>>s2;
cout<<s1+s2<<endl;
return 0;
}

完全可以避免的错误


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-04-24 12:02
无限忧伤
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-4-5
收藏
得分:0 
Sorry.9楼的哥们儿.是我的错,复制时没弄全.

2006-04-24 13:02
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

我也不敢确定我想得对不对,老看兄弟你在这论坛发帖,想和你交个朋友,我也才学1个月,知道你大1,我说说我的想法。
输入一个字符数组(即字符串),给个指向数组的指针,然后把字符逐个压入栈中(这需要建立一个Stack类,用成员函数push()压入,并检测一下,看是否危险)

方便起见,我之间写写来,没有编译,在外面,大家帮我检查下,我也很想学C++。谢了!~

#include<iostream>
#include<cassert>
using namespace std;

const int maxStr = 100;
class Stack
{ int _top,my_max,TOP;
char *_arr;
public:
Stack():_top(0),my_max(maxStr){_arr = new char[maxStr];}
~Stack(){delete [] _arr;}
Get_top(){return _top;}
void push(char ch);
int pop();
void grow();
};
void push(char ch)
{
assert(_top<my_max); //边界检测

//如果剩余的空间到达危险区域,则则调用函数grow(),使其在自由存储区中分配的空间番倍。
if (my_max-_top<20) // 这里的20是每次输入的字符不会超过的数字。(自己可以根据自己的情况而定义适当的数值)
grow();
_arr[_top]=ch;
_top++;
TOP=_top;
}
void grow()
{
char *New_arr = new char[2*my_max]
for(int i=0;i<_top;i++)
New_arr[i]=_arr[i];
delete [] _arr;
my_max*=2;
_arr=0;
}
int pop()
{
assert(_top>-1); //边界检测
--_top;
return _arr[TOP-_top-1];
}

int main()
{
char c1,c2;
Stack stack;
cout<<"请输入第一个字符串:"<<endl;
do
{
cin.get(c1);
stack.push(c1);
}while(c1);
cout<<"请输入第二个字符串:"<<endl;
do
{
cin.get(c2);
stack.push(c2);
}while(c2);
while(stack.Get_top)cout<<pop();
system("pause");
return 0;
}
由于是在网吧编的,所以只是一次性编程,肯定是很多错误的,希望大家给我提出问题,谢了~!


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-04-24 16:37
快速回复:[求助]初学者一个简单的程序错了(是关于字符串处理的)
数据加载中...
 
   



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

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