gpt4 book ai didi

c - 为什么我的 tokenize 循环无法正确填充 char-array-pointers 数组

转载 作者:行者123 更新时间:2023-11-30 15:42:52 25 4
gpt4 key购买 nike

我编写的 getword 函数接受基于 getchar() 的缓冲输入。它也由元字符分隔。每次调用后,它都会将指针移动到输入的缓冲区字符串中的下一个单词,并将最新的单词放入它作为参数的 char 指针中,在本例中,它是称为 buffer 的字符数组。

目标:使用我编写的 getword 函数,我需要将每个返回的单词/标记存储到我设置的 char*args[] 的连续索引中。

我的问题是我无法正确地将这些单独的标记加载到我的 char *args[] 的单独索引中。相反,它似乎在 for 循环的每次传递后将最新的单词存储到 args 的所有索引中。例如,如果我输入:

Hello world, this is a test.

它将以这种方式将单词存储到 args 中:

  • pass1:args[0]:你好
  • pass2:args[0]:世界, args[1]:世界,
  • pass3:args[0]:这个 args[1]:这个 args[2]:这个

代码:

int main (int argc, char *argv[]) {

char buffer[MAXBUF], *args[MAXITEM];
int c = 1;

for (i = 0; c > 0; i++) {
c = getword(buffer);
args[i] = buffer;
int g = 0;
while(args[g] != NULL) {
printf("args[%d]: %s\n", g, args[g]);
g++;
}
}
}

最佳答案

尝试改变

    args[i] = buffer;

    args[i] = strdup(buffer);

看看会发生什么。研究 strdup() 的作用。

关于c - 为什么我的 tokenize 循环无法正确填充 char-array-pointers 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20026270/

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