分段错误(核心转储)将表单数组复制到字符串
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);
}
您不必重新发明轮子,最好使用标准库函数进行字符串操作。
#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);
}
您不必重新发明轮子,最好使用标准库函数进行字符串操作。