c语言 strcat导致Segmentation fault (core dumped)

code

#include <stdio.h>
#include <string.h>
int main(){
  char *str=NULL;
  strcat(str,"litong");
  printf("%s\n",str);
  return 0;
}

运行出现错误

Segmentation fault (core dumped)

修改成下面的代码

#include <stdio.h>
#include <string.h>
int main(){
  char *str="litong";
  printf("%s\n",str);
  return 0;
}

运行输出正常,
为什么strcat之后会出现Segmentation fault (core dumped)

阅读 4.6k
2 个回答

调用 strcat 必须保证目标地址有足够的已分配的内存用于存储结果。通常需要用 malloc 提前分配内存,定义一个足够大的 char[]

你的两个例子都没有做到这一点。

是的,需要确定字符串,长度,使用maoolc分配内存

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
  char *str=malloc(100);;
  strcat(str,"litong");
  printf("%s\n",str);
  return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进