漫天花雨 发布留言 2008-7-24 09:44 求救啊,求救啊用函数实现字符串的连接,告诉我有错误,不明白怎么回事。。。。。。 我搞不清楚,在定义带字符串作为函数的形参和实参的时候,应该注意些什么。。。。。。。。 多谢大伙儿帮忙了了 #include 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=string1!='\0';j++) string=string2[j]; string='\0'; }blueboy82006 发布留言 2008-7-24 10:15 想法倒是没什么问题。只是语法上犯了不少错误。。。Tolightup 发布留言 2008-7-24 10:22 在main函数中定义的string1,string2,string都应该指明大小 按照你的写法connection函数应该有返回值,所以定义时候不用void,用char connection 因为要求有返回值,如果直接返回string,则无法实现形参与实参的转化,这里可以用指针实现 我也是初学,说的不对的请指正xiaomengxia2008 发布留言 2008-7-24 10:27 你上面的程序就和楼上两位说的一样,算法思想是对的,就是错误太多。
参考一下用strcat()函数来实现这个功能。 #include #include main() { char a[50],b[50]; gets(a); gets(b); strcat(a,b); printf("%s",a); getch(); }病书生 发布留言 2008-7-24 10:30 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函数执行完后局部变量会被释放掉
[ 本帖最后由 病书生 于 2008-7-24 10:31 编辑 [/it]]病书生 发布留言 2008-7-24 10:30 #include #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=string1!='\0';j++) string=string2[j]; string='\0'; return string; }blueboy82006 发布留言 2008-7-24 10:34 #define N 30 病书生,你这个未免也有些不合LZ的愿意吧。。。病书生 发布留言 2008-7-24 10:38 我只是想说明该怎样去做嘛 细节应该让LZ去完成漫天花雨 发布留言 2008-7-24 10:39 回复 3# Tolightup 的帖子多谢回帖,我当时指明void了啊,所以不需要有返回值的,这里我再问您一个问题,如果声明为无返回值的函数,那么一定要指明它是什么类型的嘛?漫天花雨 发布留言 2008-7-24 10:40 回复 4# xiaomengxia2008 的帖子首先多谢哥们回帖,但是我要求不能用strcat这个函数。。。。。。呵呵blueboy82006 发布留言 2008-7-24 10:40 嗯,也是。。。其实用指针比较方便漫天花雨 发布留言 2008-7-24 10:42 回复 8# 病书生 的帖子多谢你哥们,你的改正很仔细。。。。帮了我大忙。。。。。再次感谢[tk05]Tolightup 发布留言 2008-7-24 10:52 #include char *link(char s1[],char s2[]) { char *p=s1,*q=s2; for(;*p!='\0';p++) ; for(;*q!='\0';q++,p++) *p=*q; *p='\0'; p=s1; return p; } main() { char s1[100],s2[50]; gets(s1); gets(s2); printf("%s",link(s1,s2)); } 我试了,这样可以漫天花雨 发布留言 2008-7-24 10:56 回复 5# 病书生 的帖子#include void main() { void 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)); } void connection(char string1[],char string2[]) { char string[200]; int i,j; for(i=0;string1=string1!='\0';j++) string=string2[j]; string='\0'; }
哥们我把程序代码又改了改,这回就一个错误了,说是第九行not an allowed type in function main 哥们麻烦您针对我提出的问题帮我改改好吗?你的程序代码我看过了很不错。。。。病书生 发布留言 2008-7-24 11:05 printf("the result is %s\n",connection(str1,str2)); 会调用connection(str1,str2)函数的返回值,而你的 connection(str1,str2)函数没有返回值可调用, 及时你加上一个return string 也没用,因为你把string 定义会了函数局部变量,当connection函数执行完后就会被释放掉,那么就无法调用 参考 #include char string[200]; void main() { void connection(char string1[],char string2[]); char str1[50],str2[50]; gets(str1); gets(str2); connection(str1,str2); printf("the result is %s\n",string); } void connection(char string1[],char string2[]) { int i,j; for(i=0;string1=string1!='\0';j++) string=string2[j]; string='\0'; }
[ 本帖最后由 病书生 于 2008-7-24 11:16 编辑 [/it]]漫天花雨 发布留言 2008-7-24 13:33 回复 15# 病书生 的帖子太感谢你了。。。。。。。。。。。。。。哥们。。。。漫天花雨 发布留言 2008-7-24 13:34 回复 15# 病书生 的帖子[tk01]漫天花雨 发布留言 2008-7-24 14:20 回复 15# 病书生 的帖子#include 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=string1!='\0';j++) string=string2[j]; string='\0'; return(string[200]); } 倒是能运行,不过结果显示的是乱码。。。。。怎么搞的???
页: [1] 特别说明:如网页特效代码中有引用图片文件等,请自己下载到本地调试! |