weixin_54910555 2023-10-11 17:12 采纳率: 20%
浏览 10

c 简单实现字符串拼接strcat的函数功能

c 简单实现字符串拼接strcat的函数功能
代码:

#include<stdio.h>
int main()
{
   char *a="adcf";
   char *b="ghg";
   char *p=a;
   printf("a=%s\n",a);
   printf("b=%s\n",b);
   printf("p=%s\n",p);
   while( *p != '\0' )
   {
         p++;
   }
   printf("p===%s\n",p);
   while(*b!='\0')
   {
       *p=*b;
        p++;
            b++;
   }
   printf("%s\n",p);

    return 0;
}
  1. 打印:a=adcf
    b=ghg
    p=adcf
    p===
    段错误 (核心已转储)
  2. 为什么在第一次while循环后其p的打印为空,2.第2个 while 循环是哪里有问题?
  • 写回答

2条回答 默认 最新

  • id942yashua 2023-10-11 17:44
    关注

    第一个while循环结束后,指针p指向了a的结束符'\0',自然p打印就是空值。
    第二个while循环进行时指针p此时指向的内存地址是未知的,此时就可能会导致程序崩溃。
    你这个程序是拼接a与b,建议先分配好足够的内存,以完成拼接。拼接结束也要记得要使*p='\0',给新字符串添加结束符。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月11日