string1没有初始化,值是随机的,这叫野指针赋值,很容易破坏内存中的数据。
建议搞清楚指针和数组的区别。不懂指针不要乱用,c给了你管理内存的权力你就要负责任。
----------------解决方案--------------------------------------------------------
gets()函数能返回地址给string1和string2;当然也可以赋值;
----------------解决方案--------------------------------------------------------
以下是引用百年不亮在2007-7-29 22:45:00的发言:
字符串拷贝的我以前回复了两次,找出来贴给你参考:
#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) +1);
while(*ptr++ = *str_1++) ;
ptr--;
while(*ptr++ = *str_2++) ;
return array;
}
字符串拷贝的我以前回复了两次,找出来贴给你参考:
#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) +1);
while(*ptr++ = *str_1++) ;
ptr--;
while(*ptr++ = *str_2++) ;
return array;
}
字符串包含'\0'
----------------解决方案--------------------------------------------------------
回复:(jianweichief)gets()函数会自动返回一个地址...
对,stringcat函数里的 printf("%s",str1);应该是printf(“%s\n”,str1-c);(因为在stringcat函数里,str1的内存地址已经通过str++这条语句指向了str+c的内存地址)或者stringcat函数里不写这条语句,在main()函数里加上printf("%s",str1);
[此贴子已经被作者于2007-7-30 20:58:26编辑过]
----------------解决方案--------------------------------------------------------
确实是我的疏忽,以前贴了几次都没有人告诉我,谢谢我不是郭靖
----------------解决方案--------------------------------------------------------
maoguoqing大人已经告诉我应该输出str1-c了,我也觉得应该这样做。可问题是加上-c后编译报错,程序我已经写好了,现在我只想和大家探讨出错的原因,请大家踊跃发言
[此贴子已经被作者于2007-7-31 16:25:53编辑过]
----------------解决方案--------------------------------------------------------
他抱的什么错你说一下,因为我寝室电脑装系统后没安装VC
----------------解决方案--------------------------------------------------------
说未定义的符号c出现在stringcat函数中,我用的是win-tc
----------------解决方案--------------------------------------------------------