| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1213 人关注过本帖
标题:两个字符串连接问题
只看楼主 加入收藏
a16393080
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-7-23
收藏
 问题点数:0 回复次数:18 
两个字符串连接问题
#include <iostream.h>
char * f(int *a,int *b);
void main()
{ char m[4]="abc";
char n[3]="de";
  char *k=char *f(m,n);
  delete k;

}
char * f(int *a,int *b)
{int i,j;
  char * s=new char[6];
  for (i=0;i<4;i++)
      s[i]=a[i];
  for (j=0;j<3;j++)
      s[j+4]=b[j];
  return s-5;

}
请问这个错在哪里?
搜索更多相关主题的帖子: 字符 
2009-12-28 20:19
forclwy
Rank: 4
等 级:业余侠客
帖 子:167
专家分:255
注 册:2008-10-21
收藏
得分:0 
char *k=char *f(m,n);
函数调用?不能这么写吧。其它的,你再看看
2009-12-28 20:38
forclwy
Rank: 4
等 级:业余侠客
帖 子:167
专家分:255
注 册:2008-10-21
收藏
得分:0 
又是char 还有int的
2009-12-28 20:42
a16393080
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-7-23
收藏
得分:0 
回复 2楼 forclwy
这正是我感到费解的地方呀 不知道怎么改了
2009-12-28 20:51
zj33
Rank: 2
等 级:论坛游民
帖 子:12
专家分:25
注 册:2008-10-2
收藏
得分:0 
楼主的程序错误比较多, 我重新写了一个。

#include <iostream>
#include <cstring>
using namespace std;
char * f(const char *a, const char *b);

void main( )
{
    char m[ ] = "abc";
    char n[ ] = "de";
    char *k = f(m, n);
    cout << k << endl;
    delete [ ]k;
    k = NULL;
}

char * f(const char *a, const char *b)
{
    int length = strlen(a) + strlen(b) + 1;
    char *s = new char[length];
    int i,j;
    for(i = 0; i < strlen(a); i++)
    {
        s[i] = a[i];
    }
    for(j = 0; j < strlen(b);i++, j++)
    {
        s[i] = b[j];
    }
    s[i] = '\0';
    return s;
}
2009-12-28 21:39
a16393080
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-7-23
收藏
得分:0 
以下是引用zj33在2009-12-28 21:39:38的发言:

楼主的程序错误比较多, 我重新写了一个。

#include <iostream>
#include <cstring>
using namespace std;
char * f(const char *a, const char *b);

void main( )
{
    char m[ ] = "abc";
    char n[ ] = "de" ...
非常感谢您的帮忙!!
我现在把他改成这样:、请问下k=NULL是什么意思?不好意思又得打扰你
#include <iostream.h>
char *f(char *a,char *b);
void main()
{
    char m[4]="abc";
    char n[3]="de";
  char *k=f(m,n);

cout<<k<<endl;
delete  k;
//k=NULL;

}
char *f(char *a,char *b)
{
  char *s;
  s=new char[6];
  for (int i=0;i<3;i++)
      s[i]=a[i];
  for (int j=0;j<2;i++, j++) //如果把这里改成for (j=0;j<2;j++)
      s[i]=b[j];              //s[j+3]=b[j];
  s[i] = '\0';                 // s[6]='\0'; 还是会显示错误,这是为什么?

  return s;
}

[ 本帖最后由 a16393080 于 2009-12-29 09:34 编辑 ]
2009-12-29 09:11
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
收藏
得分:0 
以下是引用a16393080在2009-12-29 09:11:54的发言:

非常感谢您的帮忙!!
我现在把他改成这样:、请问下k=NULL是什么意思?不好意思又得打扰你
#include <iostream.h>
char *f(char *a,char *b);
void main()
{
    char m[4]="abc";
    char n[3]="de";
  char *k=f ...
防止悬挂指针,将指针置为NULL,也就是0。这边没有必要。
2009-12-29 09:21
a16393080
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-7-23
收藏
得分:0 
回复 7楼 秀痘魔导士
能不能帮我上面注释的地方解释一下,为什么这样改 程序会出错?
2009-12-29 09:38
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
收藏
得分:0 
以下是引用a16393080在2009-12-29 09:38:26的发言:

能不能帮我上面注释的地方解释一下,为什么这样改 程序会出错?
程序代码:
#include <iostream>
using namespace std;
void f(char *a,char *b,char *s);
void main()
{
    char m[4]="abc";
    char n[3]="de";
    char *s = new char[6];
    f(m,n,s);

    cout<<s<<endl;

}
void f(char *a,char *b,char *s)
{
    for (int i=0;i<3;i++)
        s[i]=a[i];
    for (int j=0;j<2;j++) //如果把这里改成for (j=0;j<2;j++)
        s[j+3]=b[j];              //s[j+3]=b[j];
    s[6] = '\0';                 // s[6]='\0'; 还是会显示错误,这是为什么?
}
好好把C++ PRIMER读几遍吧,写得代码太多问题了,返回值和变量生存期好好看一下

2009-12-29 09:54
a16393080
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-7-23
收藏
得分:0 
就是在编写时出了问题,才上来请教的,呵呵。本来按我最初的设想return s返回的是地址,但结果缺不是。
C++ PRIMER(第四版) 习题不是很清晰 如果论坛有提供就好了


[ 本帖最后由 a16393080 于 2009-12-29 12:18 编辑 ]
2009-12-29 12:15
快速回复:两个字符串连接问题
数据加载中...
 
   



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

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