gpt4 book ai didi

c - 使用 strtok() 的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 14:54:23 27 4
gpt4 key购买 nike

澄清一下,我在 C 编程方面完全是新手。我有一个 tokenize 函数,但它的行为并不像我期望的那样。我试图从客户端传递的 FIFO 或命名管道中读取数据,这是服务器端。客户端读取文件并将其传递到 FIFO。问题是 tokenize 不返回 execvp 可以处理它的格式,因为运行 gdb 告诉我它无法调用 main() 中的执行函数。 (append函数将一个字符追加到字符串中)

最佳答案

一个错误是 token 既没有初始化也没有分配任何内存。

以下是如何为 token 初始化和分配内存的示例:

char **tokenize(char *line){
line = append(line,'\0');
int i = 0, tlen = 0;
char **tokens = NULL, *line2, *token, *delimiter;
delimiter = " \t";
token = strtok(line,delimiter);
while (token != NULL) {
if (i == tlen) {
// Allocate more space
tlen += 10;
tokens = realloc(tokens, tlen * sizeof *tokens);
if (tokens == NULL) {
exit(1);
}
}
tokens[i] = token;
token = strtok(NULL, delimiter);
i += 1;
}
tokens[i] = NULL;
return tokens;
}

此代码将一次为 10 个 token 分配内存。如果内存分配失败,它将以非零返回值结束程序以指示失败。

关于c - 使用 strtok() 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46788708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com