#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 rn",name[i]);
}
}
预期的输出是这个Newwolrd,但我收到核心转储的错误 Canany一个人有理由为什么以及如何克服这个
这应该有效:
int main()
{
char str[255] = "Hello;thisnewwolrd";
char *ptr = strchr(str, ';') + 1;
char name[255];
strcpy( name, ptr);
printf("%s rn", name);
}
您不必重新发明轮子,并且最好使用标准库函数进行字符串操作。
您必须分配内存来存储字符串副本。例如:char *name = malloc(255*sizeof(char));
.
并且您必须创建另一个迭代器而不是i
,才能开始填充从索引 0 开始填充name
所指向的内存空间。