当前位置: 代码迷 >> C语言 >> 请看看我的程序问题在哪(somebody help me,please)
  详细解决方案

请看看我的程序问题在哪(somebody help me,please)

热度:261   发布时间:2007-07-29 15:21:06.0
请看看我的程序问题在哪(somebody help me,please)

#include "stdio.h"
#include "conio.h"
#include "string.h"

char stringcat(char *str1,char *str2);
main()
{

char *string1,*string2;

gets(string1);
gets(string2);
stringcat(string1,string2);

getch();

}

char stringcat(char *str1,char *str2)
{
int c=strlen(str1);
for(;*(str1+c)=*str2,*str2!='\0';str1++,str2++)
;

printf("%s",str1);
}

我想实现的功能是字符串相连接.比如说s1=eeeee,s2=ssss将s2中的字符加到s1后,输出s1,得到s1=eeeeessss.
但我在win-tc 1.91上结果是s1=essss.把四个e给覆盖了,请高手帮我改改。

[此贴子已经被作者于2007-7-29 16:45:54编辑过]

搜索更多相关的解决方案: somebody  please  help  

----------------解决方案--------------------------------------------------------
string1,string2都没有地址 你能通过编译吗?

要连接 你就得新new一个字符串,长度为string1,string2的总长度+1

然后把string1,string2的字符依次取出赋给新的字符串元素

或者string1,string2 strcpy到新字符串的相应位置
----------------解决方案--------------------------------------------------------
gets()函数会自动返回一个地址给string1,string2的。
我不想用其它的字符串。能做不?

原题是这样的:

实现strcat()的功能

strcat(char *str1,char *str2)
{while(*str1!='\0')
___________(1)
for(;______(2);str1++,str2++)
{}
}
问_____(1) _______(2)处各添什么

[此贴子已经被作者于2007-7-29 15:45:58编辑过]


----------------解决方案--------------------------------------------------------
gets()函数会自动返回一个地址给string1,string2的。
这么强?什么编译器哦?

想不从新分配空间那就得给str1的空间足够长,至少能同时容下str1和str2

把你的程序最后一个 printf("%s",str1);改成printf("%s",str1-c);
----------------解决方案--------------------------------------------------------
回复:(maoguoqing)gets()函数会自动返回一个地址给...
像你说的那样我做了以后,编译不了了。
----------------解决方案--------------------------------------------------------
什么错?
----------------解决方案--------------------------------------------------------
未定义的符号‘c’在stringcat函数中
----------------解决方案--------------------------------------------------------
c不是你求的字符串的长度嘛
----------------解决方案--------------------------------------------------------
字符串拷贝的我以前回复了两次,找出来贴给你参考:
#include<string.h>
#include<malloc.h>
#include<stdio.h>

char * Mystrcat(char * str_1,char *str_2);
int main()
{
char *string;
string = Mystrcat("hello ","word");
puts(string);
return 0;
}

char * Mystrcat(char * str_1,char *str_2)
{
char *array,*ptr;

ptr=array=(char *)malloc(strlen(str_1)+strlen(str_2));
while(*ptr++ = *str_1++) ;
ptr--;
while(*ptr++ = *str_2++) ;

return array;
}

----------------解决方案--------------------------------------------------------
char *string1,*string2;
这样定义最好少用
----------------解决方案--------------------------------------------------------
  相关解决方案