【发布时间】:2020-08-11 17:39:43
【问题描述】:
已编辑:这修复了原始段错误。但现在我不确定为什么 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(char*) * MAX_WORD_LEN);应该是char* text2 = malloc(sizeof(char) * MAX_WORD_LEN);,或者更好的是char* text2 = malloc(sizeof(*text2) * MAX_WORD_LEN); -
也就是说,内部
while看起来是if的候选对象。 -
@SouravGhosh 谢谢你们!这两个建议都修复了段错误。该字符串现在存储空值,但至少向前迈进了一步
-
@cdpp 循环没有意义。如果你描述你正在尝试做的事情会更好。
-
为什么在创建char数组时要乘以指针的大小?
标签: c segmentation-fault character whitespace c99