标题:求救啊,求救啊
只看楼主
漫天花雨
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2008-7-13
结帖率:100%
 问题点数:0 回复次数:17 
求救啊,求救啊
用函数实现字符串的连接,告诉我有错误,不明白怎么回事。。。。。。
我搞不清楚,在定义带字符串作为函数的形参和实参的时候,应该注意些什么。。。。。。。。
多谢大伙儿帮忙了了





#include<stdio.h>
void main()
{
 void connection(string1[],string2[]);
 char string1[],string2[],string[];
 gets(string1[]);
 gets(string2[]);
 connection(string1,string2);
 printf("the result is %s\n",connection(string1[],string2[]));
 }
 void connection(string1[],string2[])
 {
  char string[];
  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';
   }
搜索更多相关主题的帖子: result include void 字符串 
2008-07-24 09:44
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
想法倒是没什么问题。只是语法上犯了不少错误。。。

2008-07-24 10:15
Tolightup
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-7-24
得分:0 
在main函数中定义的string1,string2,string都应该指明大小
按照你的写法connection函数应该有返回值,所以定义时候不用void,用char connection
因为要求有返回值,如果直接返回string,则无法实现形参与实参的转化,这里可以用指针实现
我也是初学,说的不对的请指正
2008-07-24 10:22
xiaomengxia2008
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-7-23
得分:0 
你上面的程序就和楼上两位说的一样,算法思想是对的,就是错误太多。

参考一下用strcat()函数来实现这个功能。
#include<stdio.h>
#include<string.h>
main()
{
 char a[50],b[50];
 gets(a);
 gets(b);
 strcat(a,b);
 printf("%s",a);
 getch();
}
2008-07-24 10:27
病书生
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2007-11-8
得分:0 
1: connection(string1[],string2[]);
应为connection(char string1[],char string2[]);
2: void connection(string1[],string2[])
函数没有返回值
3:connection(string1,string2);
printf("the result is %s\n",connection(string1[],string2[]));
为什么 前后两个connection里的内容不一样了?
4: char string1[],string2[],string[];
gets(string1[]);
gets(string2[]);
应该为string1,string2 指定大小,string没有使用到

gets(string1[]);
gets(string2[]);
应为 gets(string1);
     gets(string2); //传递是地址

5: 从connection 函数看来是该返回合并后string的地址,所以函数应该是指针函数,且string不能是局部变量因为connection函数执行完后局部变量会被释放掉

[[it] 本帖最后由 病书生 于 2008-7-24 10:31 编辑 [/it]]
2008-07-24 10:30
病书生
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2007-11-8
得分:0 
#include<stdio.h>
#define N 30
char string[2*N];
void main()
{
char *connection(char string1[],char string2[]);
char string1[N],string2[N];
gets(string1);
gets(string2);
connection(string1,string2);
printf("the result is %s\n",connection(string1,string2));
}
char *connection(char string1[],char string2[])
{
  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 10:30
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
#define N 30
病书生,你这个未免也有些不合LZ的愿意吧。。。

2008-07-24 10:34
病书生
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2007-11-8
得分:0 
我只是想说明该怎样去做嘛 细节应该让LZ去完成
2008-07-24 10:38
漫天花雨
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2008-7-13
得分:0 
回复 3# Tolightup 的帖子
多谢回帖,我当时指明void了啊,所以不需要有返回值的,这里我再问您一个问题,如果声明为无返回值的函数,那么一定要指明它是什么类型的嘛?
2008-07-24 10:39
漫天花雨
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2008-7-13
得分:0 
回复 4# xiaomengxia2008 的帖子
首先多谢哥们回帖,但是我要求不能用strcat这个函数。。。。。。呵呵
2008-07-24 10:40



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




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

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