gpt4 book ai didi

char[] 和 char* 兼容性?

转载 作者:太空宇宙 更新时间:2023-11-04 04:52:36 25 4
gpt4 key购买 nike

从本质上讲,这段代码行得通吗?在你说“运行它看看!”之前,我刚刚意识到我的 cygwin 没有附带 gcc,目前距离完成重新安装还有 40 分钟。话虽这么说:

char* words[1000];
for(int i = 0; i<1000; i++)
words[i] = NULL;

char buffer[ 1024 ];

//omit code that places "ADD splash\0" into the buffer

if(strncmp (buffer, "ADD ", 4) == 0){
char* temp = buffer + 4;
printf("Adding: %s", temp);
int i = 0;
while(words[i] != NULL) i++;
words[i] = temp;
}

我对 char* temp = buffer + 4 这一行非常不确定,也不确定我是否可以按照我现在的方式分配 words[i]。当我最终尝试在 40 分钟内编译它时,我会遇到类型错误吗?

另外——如果这可行,为什么我不需要对 words[] 的每个元素使用 malloc()?为什么我可以说 words[i] = temp,而不需要为 words[i] 分配 temp 长度的内存?

最佳答案

这可能不会起作用,因为所有 words[i] 都将被设置为指向 buffer + 4 的相同位置。

但是,您的基本想法很好:您可以按照相同的基本想法将大缓冲区“分割”成较小的“单词”。但是,您需要确保您没有指向缓冲区的交叉区域,并且您指向的区域是空终止的。

最后,每次遍历 words[i] 以找到下一个 NULL 的想法是次优的:您应该存储您写入的最后一个位置,在下次写入时增加它,并删除 while(words[i] != NULL) 循环。

关于char[] 和 char* 兼容性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674839/

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