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

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

热度:224   发布时间:2007-07-29 22:55:03.0
楼主用gets(string1);和 gets(string2);存储输入的字符串,想没想过存到哪里去了?
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;
}

字符串包含'\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


----------------解决方案--------------------------------------------------------
  相关解决方案