| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 563 人关注过本帖
标题:菜问题,再次请教
收藏  订阅  推荐  打印
漫天花雨
Rank: 1
等级:新手上路
帖子:34
积分:474
注册:2008-7-13
菜问题,再次请教

用函数实现两个字符串的连接
我的代码如下
#include<stdio.h>
void main()
{
char connection(char string1[],char string2[]);
char str1[50],str2[50];
gets(str1);
gets(str2);
connection(str1,str2);
printf("the result is %s\n",connection(str1,str2));
}
char connection(char string1[],char string2[])
{
  char string[200];
  int i,j;
  for(i=0;string1[i]!='\0';i++)
   string[i]=string1[i];
   for(j=0;string2[j]!='\0';j++)
   string[i+j]=string2[j];
   string[i+j]='\0';
   return(string[200]);
   }
倒是能运行,不过结果显示的是乱码。。。。。怎么搞的???
我怀疑是返回值有问题。。。。不过不知道问题在哪,希望大侠们帮助解决,给以宝贵的指点,多谢。。。
2008-7-24 15:00
xiaomengxia2008
Rank: 2
等级:注册会员
帖子:80
积分:970
注册:2008-7-23

我也没调出来!
2008-7-24 16:13
StarWing83
Rank: 12Rank: 12Rank: 12
来自:湖北工业大学
等级:版主
威望:9
帖子:2483
积分:26197
注册:2007-11-16

你自己看你的connection这个函数怎么写的,返回的是char,却使用%s控制符,而且你返回string[200]干嘛??就算是返回string,你返回了一个临时数组,照样出错……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-7-24 16:17
漫天花雨
Rank: 1
等级:新手上路
帖子:34
积分:474
注册:2008-7-13
回复 3# StarWing83 的帖子

那应该怎么样改呢?
2008-7-24 16:44
huangch
Rank: 2
来自:肇庆学院网络工程系
等级:注册会员
帖子:42
积分:532
注册:2008-7-21

用指针吧!
改成这样:
#include<stdio.h>

void main()
{
    void connection(char *s,char *t);
    char str1[50],str2[50];
    
    gets(str1);
    gets(str2);
    connection(str1,str2);
    printf("the result is %s\n",str1);
}

void connection(char *s,char *t)
{
    while (*s)
        s++;
    while (*s++ = *t++)
        ;
}
2008-7-24 17:05
huangch
Rank: 2
来自:肇庆学院网络工程系
等级:注册会员
帖子:42
积分:532
注册:2008-7-21

具体的原因不是很清楚!
我也想请教其他大侠的看法;
只知道指针可以自由的指来指去,很容易实现;
而数组难于移动,导致不能正常的调用函数!
不知是否怎样解释!?
2008-7-24 17:12
病书生
Rank: 2
等级:注册会员
帖子:93
积分:1150
注册:2007-11-8

楼主你指针和地址个概念还没建立啊
2008-7-24 17:16
hello_moto
Rank: 2
等级:注册会员
帖子:34
积分:532
注册:2008-7-15

在你的基础上改的
可以用,但为了让改动最小,一些东西没有考虑,
比如,重复调用,内存泄漏。。。

#include<stdio.h>
#include<stdlib.h>
void main()
{
char* connection(char string1[],char string2[]);
char str1[50],str2[50];
gets(str1);
gets(str2);
connection(str1,str2);
printf("the result is %s\n",connection(str1,str2));
}
char * connection(char string1[],char string2[])
{
  char* string=(char*)malloc(100);
  int i,j;
  for(i=0;string1[i]!='\0';i++)
   string[i]=string1[i];
   for(j=0;string2[j]!='\0';j++)
   string[i+j]=string2[j];
   string[i+j]='\0';
   return string;
   }
2008-7-24 17:27
vk100
Rank: 1
等级:新手上路
帖子:2
积分:120
注册:2008-7-24

学习学习~~~
2008-7-24 18:07
StarWing83
Rank: 12Rank: 12Rank: 12
来自:湖北工业大学
等级:版主
威望:9
帖子:2483
积分:26197
注册:2007-11-16
回复 8# hello_moto 的帖子

内存分配了不释放么?

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-7-25 09:56
共有 562 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.054426 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved