| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1506 人关注过本帖
标题:写着玩的,还知道为什么会错啊?谢谢
只看楼主 加入收藏
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
结帖率:100%
收藏
 问题点数:0 回复次数:10 
写着玩的,还知道为什么会错啊?谢谢
#include"stdio.h"
#include"string.h"

//void shuchu(char * ,char *);
 

class string1
{
private:
    char *str1;
public:
    string1(){}
    string1(char *p)
    {
        str1=p;
    }
    friend string1 operator +(string1 &p1,string1 &p2)
    {       char *str3=strcat(p1.str1,p2.str1);
           return string1(str3 );
    }
    void shuchu()
   {
        printf(str1);
   }
};
void main(int argc, char* argv[])
{   
    string1 a("ceshi1") ,b("ceshi2"),c;
    printf("Hello World!\n");
    c=a+b;
    c.shuchu();
  }
搜索更多相关主题的帖子: char void shuchu printf 
2008-01-16 21:56
zabbey
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-10-10
收藏
得分:0 
应该是strcat(p1.str1, p2.str1)出错了。

2008-01-17 12:25
zabbey
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-10-10
收藏
得分:0 
friend string1 operator +(string1 &p1, string1 &p2)
    {
        char test[512] = "";
        char *str3 = strcat(test, p2.str1);
        return string1(str3);
    }

我用上面的代码能行,跟strcat条件有关吧,\0和足够的空间。我是新手,来凑热闹的,等高人给出更合理的解释。

2008-01-17 12:43
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
其实你想的和我差不多,但是查了一下,没见到strcat有限制数组长度这样的说法啊.呵呵,谢谢你
2008-01-17 12:49
zabbey
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-10-10
收藏
得分:0 
不是说限制数组长度吧,是strcat把后面字串的内容复制到了前面的字串,这里必须要前面字串有“足够大”的空间。
char指针这种我猜应该是没有空间信息,char数组的数组指针应该是带了,这个也希望高手来说明一下。

2008-01-17 13:01
zabbey
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-10-10
收藏
得分:0 
#include"stdio.h"
#include"string.h"

//void shuchu(char * ,char *);


class string1
{
private:
    char *str1;
public:
    string1(){}
    string1(char *p)
    {
        str1 = p;
    }
    friend string1 operator +(string1 &p1,string1 &p2)
    {      
        char *str3 = strcat(p1.str1, p2.str1);
        return string1(str3);
    }
    void shuchu()
    {
        printf(str1);
    }
};


void main(int argc, char* argv[])
{   
    char test[20] = "test";
    string1 a(test), b("ceshi2"),c;
    printf("Hello World!\n");
    c = a + b;
    c.shuchu();
}

=============================
上面代码运行成功。
用string1 a("ceshi1")的话,a.str1是常量的指针,strcat是不能修改的。 这下感觉是找到原因了。

2008-01-17 14:00
fbird
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-8-11
收藏
得分:0 
应该是楼上说的这个问题
2008-01-18 14:05
learningl
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-7
收藏
得分:0 
我在TC下通过,没问题,好像是vc6.0自身的问题

[[it] 本帖最后由 learningl 于 2008-4-7 15:26 编辑 [/it]]
2008-04-07 14:43
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你把几个月之前的帖子都翻出来了.....呵呵

学习需要安静。。海盗要重新来过。。
2008-04-07 15:09
learningl
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-7
收藏
得分:0 
我刚注册,所以随便看看啊,没事多交流啊,我是小鸟
2008-04-07 15:27
快速回复:写着玩的,还知道为什么会错啊?谢谢
数据加载中...
 
   



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

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