我试图在C语言中创建单词生成器,发现了分段错误消息。
gdb输出:
_GI___strtok_r (
s=0x562d88201188 "some text without comma",
delim=0x562d8820117f " ", save_ptr=0x7f570a47aa68 <olds>) at strtok_r.c:72
带有strtox函数的代码:
char **words = malloc(sizeof(char *) * NUM_WORDS);
int num_words = 0;
char *save_ptr;
char *word = strtok(text, " ");
while (word != NULL) {
// Strip leading and trailing whitespace
while (isspace(*word)) {
word++;
}
int len = strlen(word);
while (len > 0 && isspace(word[len - 1])) {
len--;
}
// Allocate memory for the word and copy it using strdup()
words[num_words] = strdup(word);
// Move to the next word
num_words++;
word = strtok(NULL, " ");
}
如何在文本中使用字数不确定函数?
1条答案
按热度按时间gab6jxml1#
不敢相信终于有人要这个了!
您可能希望添加
realloc()
没有返回NULL的验证。简而言之,字符串在提供给
strtok()
的分隔符处被截断,而realloc()
用于增长指向这些段中的每一个的指针数组。然后是可以处理多个输入行的扩展:
将
strtok()
作为strdup()
的参数,这样就可以在使用单行输入缓冲区时保留单词。