当前位置: 代码迷 >> C语言 >> [求助]这个程序虽然能正确输出,但弹出警告
  详细解决方案

[求助]这个程序虽然能正确输出,但弹出警告

热度:147   发布时间:2006-12-20 21:32:53.0
[求助]这个程序虽然能正确输出,但弹出警告


#include <stdio.h>
char mystrcat(char *a,char *b)
{
while(*a!=0)
a++;
while((*a=*b)!=0)
{
a++;
b++;
}
return *b;
}
void main()
{
char arr1[20]="I love you!";
char arr2[30]="I love you forever";
char *p=arr1;
char *q=arr2;
mystrcat(p,q);
printf("%s\n",arr1);
}
我想自己编一个函数,实现strcat的功能,虽然该程序能打印出来,但是总是出现“该内存不能为read”的警告。
麻烦大家帮我看看。谢谢~~~

搜索更多相关的解决方案: 输出  警告  

----------------解决方案--------------------------------------------------------
因为你这程序有返回
但调用的时候没接受
虽然那个接受没什么用

所以会又报错

mystrcat(p,q);
你随便接收下就ok
----------------解决方案--------------------------------------------------------

[此贴子已经被作者于2007-1-3 17:39:09编辑过]


----------------解决方案--------------------------------------------------------
static char arr1[20]="I love you!";
static char arr2[30]="I love you forever";
这样初始化才为"NUL"
----------------解决方案--------------------------------------------------------
char mystrcat(char *a,char *b)
{
while(*a!='\0')
a++;
while((*a=*b)!='\0')
{
a++;
b++;
}
*a='\0';
}
用的指针
不需返回....
----------------解决方案--------------------------------------------------------
呵呵,不用返回,返回值的类型为void型吧!
----------------解决方案--------------------------------------------------------
呵呵,像5楼那样改就对了!
----------------解决方案--------------------------------------------------------
呵呵,*a='\0';事实上这句可以不要,因为在这一句当中while((*a=*b)!='\0')字符串的末尾已经添加了'\0'了。

----------------解决方案--------------------------------------------------------
以下是引用zhanghuan_10在2007-1-3 18:06:32的发言:
呵呵,*a='\0';事实上这句可以不要,因为在这一句当中while((*a=*b)!='\0')字符串的末尾已经添加了'\0'了。



没有.....
----------------解决方案--------------------------------------------------------
char mystrcat(char *a,char *b)

char 确实该去掉~~
----------------解决方案--------------------------------------------------------

  相关解决方案