请看看我的程序问题在哪(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);
}
但我在win-tc 1.91上结果是s1=essss.把四个e给覆盖了,请高手帮我改改。
[此贴子已经被作者于2007-7-29 16:45:54编辑过]
----------------解决方案--------------------------------------------------------
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)处各添什么
{while(*str1!='\0')
___________(1)
for(;______(2);str1++,str2++)
{}
}
[此贴子已经被作者于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;
这样定义最好少用
----------------解决方案--------------------------------------------------------