新微赢技术网

标题: c++中用strcpy和strcat报错 [打印本页]

作者: √金刚石猛男    时间: 2009-11-4 01:54
标题: c++中用strcpy和strcat报错
俺是新手,菜鸟一个,刚学C++,
刚编了个字符相加的程序,功能是,将两个字符相加,例如:输入hello,和world两个字符,便输出helloworld
可是总是出错,用strcpy,和strcat函数时,也报错;
最后,编译时没错,可是运行不了,着实郁闷,望哪位高手,帮忙写个程序,让俺看看
谢谢了先!
作者: 黒設會    时间: 2009-11-4 01:54
Example

/* STRCPY.C: This program uses strcpy
* and strcat to build a phrase.
*/

#include <string.h>
#include <stdio.h>

void main( void )
{
char string[80];
strcpy( string, "Hello world from " );
strcat( string, "strcpy " );
strcat( string, "and " );
strcat( string, "strcat!" );
printf( "String = %s\n", string );
}

Output
String = Hello world from strcpy and strcat!
作者: 帅精灵    时间: 2009-11-4 01:54
新手,以前不知道怎么找到自己发的东西,现在才 知道了,故而特地回来感谢下
谢谢!!!
作者: ξǒひ糀無蒛    时间: 2009-11-4 01:55
#include <iostream>
#include <string>
using namespace std;
void main ()
{
char char1[15];
char char2[15];
cout << "Enter the first Character string:";
cin >> char1;
cout << "Enter the second Character string:";
cin >> char2;
int len = strlen ( char1 ) + strlen ( char2 );
char *char3 = new char[len + 1];
strcpy ( char3, char1 );
strcat ( char3, char2 );
cout << "New Character string After Merge:" << char3;
}
作者: 秋燕子_児    时间: 2009-11-4 01:55
谢谢了先!!!
作者: 逍遥的雨夜    时间: 2009-11-4 01:55
那顺便帮我看看下面的程序怎么总是出错:

#include <iostream.h>
#include <string.h>
class zf
{
char * str;
public:
void input()
{
cout<<"输入字符:"<<endl;
cin>>str;
}
void print()
{
cout<<str<<endl;
}
~zf()
{
delete str;
}
friend zf operator + (zf &a,zf &b);
};
zf operator + (zf &a,zf &b)
{
zf temp;
delete temp.str;
temp.str=new char [strlen(a.str)+strlen(b.str)+1];
strcpy(temp.str,a.str);
strcat(temp.str,b.str);
return temp;
}
main()
{
zf a ,b,c;
a.input();
b.input();
c=b+a;
c.print();
return 0;
}

拜托了!!!!!
作者: 蓝血腥人    时间: 2009-11-4 01:55
应该是使用字符串数组吧,资源分配方面有问题~~~~
建议使用string,而不是char*:

#include <iostream>
#include <string>
using namespace std;
class MyClass{
string str;
public:
MyClass(){}
MyClass(const string& str_):str(str_){}
void input(){
cout<<"please input a string: ";
cin>>str;
}
void print() const{
cout<<"The result: ";
cout<<str<<endl;
}
friend MyClass operator+(const MyClass &a,const MyClass &b){
return MyClass(a.str+' '+b.str);
}
~MyClass(){}
};
int main(){
MyClass a,b,c;
a.input();
b.input();
c=a+b;
c.print();
return 0;
}
作者: 爱琴海    时间: 2009-11-4 01:55
总之,先谢谢了!
作者: 不材之木    时间: 2009-11-4 01:55
哇嘶!7楼的你好厉害,真的可以了,
可是我经过以下变化就错了好多错误,拜托帮我解释:

#include <iostream.h> // 这里改变了
#include <string.h>
//using namespace std;
class MyClass{
string str;
public:
MyClass(){}
MyClass(const string& str_):str(str_){}
void input(){
cout<<"please input a string: ";
cin>>str;
}
void print() const{
cout<<"The result: ";
cout<<str<<endl;
}
friend MyClass operator+(const MyClass &a,const MyClass &b){
return MyClass(a.str+' '+b.str);
}
~MyClass(){}
};
int main(){
MyClass a,b,c;
a.input();
b.input();
c=a+b;
c.print();
return 0;
}
作者: 皇家㊣贺v    时间: 2009-11-4 01:55
你把using namespace std;给屏蔽了,不错才怪呢!!!!!!!!!!!!!!!!!!




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2