gpt4 book ai didi

c - 返回-1时strtok消失

转载 作者:行者123 更新时间:2023-11-30 17:46:45 30 4
gpt4 key购买 nike

所以我正在编写代码将字符串放入数组中,它工作得很好,但是我希望它在我在文件中点击 ## 时终止字符串的读取。我正在运行一个循环并逐行解析字符串。在我的字符串解析器中,我放置了一个循环来检查 ##。它位于我的解析器函数的最后,它是:

for (i = 0; i < strlen(line)); i++)
{
if ((buffer[i] == '#') && (buffer[i+1] == '#'))
{
return -1;
}
}

问题是,当它到达末尾带有 ## 的行时,它不会将字符串解析到我的数组中。看起来它只是忽略了这个循环之前的代码。

作为附加信息,我使用 strtok 将标记放入 for 循环之前的 char* 数组中的位置。

编辑:这是我的 parseString 函数:

int parseString(char* line, char*** inString)
{
char* buffer;
int Token, i;

buffer = (char*) malloc(strlen(line) * sizeof(char));
strcpy(buffer,line);
(*inString) = (char**) malloc(MAX_TOKS * sizeof(char**));

Token = 0;
(*inString)[Token++] = strtok(buffer, DELIMITERS);

while ((((*inString)[token] = strtok(NULL, DELIMITERS)) != NULL) && (Token < MAX_TOKS))
Token++;

for(i=0; i<strlen(line); i++)
{
if ((buffer[i] == '#') && (buffer[i+1] == '#'))
{
return -1;
}
}
return Token;
}

最佳答案

首先,您在数组上读取越界,因为 array[-1] 不好。其次,使用变量来保存字符串长度,因为这样做会导致 for 循环为每次迭代重新计算 strlen(line)

现在,对于您的问题,似乎您将其放在将其添加到数组的代码之前。如果您能给我们更多的代码,那将会有所帮助。

关于c - 返回-1时strtok消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19176454/

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