标题:菜问题,再次请教
只看楼主
漫天花雨
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2008-7-13
结帖率:100%
 问题点数:0 回复次数: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]);
   }
倒是能运行,不过结果显示的是乱码。。。。。怎么搞的???
我怀疑是返回值有问题。。。。不过不知道问题在哪,希望大侠们帮助解决,给以宝贵的指点,多谢。。。
搜索更多相关主题的帖子: char connection main includevoid 
2008-07-24 15:00
xiaomengxia2008
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-7-23
得分:0 
我也没调出来!
2008-07-24 16:13
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:0 
你自己看你的connection这个函数怎么写的,返回的是char,却使用%s控制符,而且你返回string[200]干嘛??就算是返回string,你返回了一个临时数组,照样出错……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-24 16:17
漫天花雨
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2008-7-13
得分:0 
回复 3# StarWing83 的帖子
那应该怎么样改呢?
2008-07-24 16:44
huangch
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:62
专家分:0
注 册:2008-7-21
得分:0 
用指针吧!
改成这样:
#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-07-24 17:05
huangch
Rank: 1
来 自:肇庆学院网络工程系
等 级:新手上路
帖 子:62
专家分:0
注 册:2008-7-21
得分:0 
具体的原因不是很清楚!
我也想请教其他大侠的看法;
只知道指针可以自由的指来指去,很容易实现;
而数组难于移动,导致不能正常的调用函数!
不知是否怎样解释!?
2008-07-24 17:12
病书生
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2007-11-8
得分:0 
楼主你指针和地址个概念还没建立啊
2008-07-24 17:16
hello_moto
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2008-7-15
得分:0 
在你的基础上改的
可以用,但为了让改动最小,一些东西没有考虑,
比如,重复调用,内存泄漏。。。

#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-07-24 17:27
vk100
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-7-24
得分:0 
学习学习~~~
2008-07-24 18:07
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
得分:0 
回复 8# hello_moto 的帖子
内存分配了不释放么?

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-25 09:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-225079-1-1.html




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

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