字符串为什么会连接不上去?

yuanfen139 2007-11-08 11:48:27
12 char *my_strcat(char *strDest, char *strSour)
13 {
14 char *tmp = strDest;
15 while(*(strDest++) != '\0')
16 {
17 ;
18 }
19
20 while(*strSour != '\0')
21 {
22 *(strDest++) = *(strSour++); //把strDest的那个'\0'给覆盖掉,但就是连接不上去,请高手指点
23 }
*strDest = '\0';
24 return tmp;
25 }
26
27 int main(int argc, char *argv[])
28 {
29 my_strcat(argv[1], argv[2]);
30 printf("%s\n", argv[1]);
31
32 return 0;
33 }
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Treazy 2007-11-09
  • 打赏
  • 举报
回复
my_strcat(argv[1], argv[2]);
请确保argv[]是否为非NULL指针!
ccyingfu 2007-11-09
  • 打赏
  • 举报
回复

/*
不用系统函数string.h库
*/

#include <stdio.h>

void main()
{
char a[80],b[40];
static int i=0;
int j=0;

scanf("%s",a);
scanf("%s",b);

while(a[i] != '\0')
{
i++;
}
while(b[j] != '\0')
{
a[i++] = b[j];
j++;
}
a[i] = '\0';

printf("%s\n",a);

}


我是这么做的.
starwalker 2007-11-08
  • 打赏
  • 举报
回复
不过,建议不要修改argv中的内容,因为没有元素所指的空间都很少,这样连接会导致越界访问内存。
应该复制一份到别的地方再操作
starwalker 2007-11-08
  • 打赏
  • 举报
回复
char   *my_strcat(char   *strDest,   char   *strSour) 
{
char *tmp = strDest;
while(*strDest != '\0') // 注意这里
{
strDest++; // 还有这里
}

while(*strSour != '\0')
{
*(strDest++) = *(strSour++); //把strDest的那个 '\0 '给覆盖掉,但就是连接不上去,请高手指点
}
*strDest = '\0 ';
return tmp;
}

int main(int argc, char *argv[])
{
my_strcat(argv[1], argv[2]);
printf( "%s\n ", argv[1]);

return 0;
}


你那个程序,第一个while结束之后,strDest已经指向'\0'后面的一个字符了
还有,'\0'引号中间不要空格

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧