如何解决尝试从另一个char指针分配一个char指针为什么会出现段错误?
已编辑:修复了原始的段错误。但是现在我不确定为什么text2只存储NULL
char* text = "some text";
char* text2 = malloc(sizeof(text2) * MAX_WORD_LEN);
while (*text != '\0'){
*text2++ = *text;
if(isspace(*text)){
while (isspace(*text)){
*text++;
}
}
else{ *text++; }
}
为什么此段错误?我应该怎么做?
解决方法
您的代码有几个问题。我在下面列出了它:
-
char* text2 = malloc(sizeof(text2) * MAX_WORD_LEN);
是什么意思,sizeof(text2)
,应该是sizeof(char)
- 您要增加
text2 pointer
,然后如何打印text2
,如果不知道text2
的开头,则是由于增加了指针{{1 }}只会指向'\ 0'。 - while循环中也有问题...
text2
,您无需检查此处是否到达while (isspace(*text))
...
好,让我给出正确的代码版本:
*text = '\0' or not
[P.S。]:提醒一下,我已经为您提供了该程序,该程序最后还会处理空格。但是,如果您想要更好的东西,那么您必须处理前面,中间和结尾的空间...如果所有地方...这都可以为您服务...
,您没有存储空值。但是,由于每次将text2
都存储在其中时,就不再有指向原始text2
字符串开头的指针。在循环结束时,text2
指向刚复制的最后一个字符。
复制text2
以便在循环中使用,这样text2
将继续指向起点。或者使用数组索引而不是增加指针。
char* text = "some text";
char* text2 = malloc(MAX_WORD_LEN);
char *p = text2;
while (*text != '\0'){
*p++ = *text;
if(isspace(*text)){
while (isspace(*text)){
*text++;
}
} else{ *text++; }
}
*p = '\0'; // add null terminator
printf("result: %s\n",text2);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。