分段错误(核心转储)将表单数组复制到字符串

Segmentation fault (core dumped) copying form array to string

#include <string.h>
#include <stdio.h>

int main()
{

char str[255] = "Hello;thisnewwolrd";

int i =0;
while(str[i] != ';')
{
   i++;
}
i++;

 char *name = NULL;
 while(str[i] != NULL)
{

  name[i] = str[i];
  i++;
    printf("%c \r\n",name[i]);
 }

}

预期输出是 thisnewwolrd 但我收到核心转储错误 谁能知道为什么以及如何克服这个问题

您必须分配内存来存储您的字符串副本。例如:char *name = malloc(255*sizeof(char));.

并且您必须创建除 i 以外的另一个迭代器,以开始填充 name 指向的内存 space,从索引 0 开始。

这应该有效:

int main()
{
    char str[255] = "Hello;thisnewwolrd";
    char *ptr = strchr(str, ';') + 1;

    char name[255];
    strcpy( name, ptr);

    printf("%s \r\n", name);
}

您不必重新发明轮子,最好使用标准库函数进行字符串操作。