gpt4 book ai didi

C - 使用 strtok 的嵌套循环

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

我正在尝试使用 strtok 将文本文件拆分为可以传递给拼写检查功能的字符串,该文本文件包含诸如“\n”、“?!,.”之类的字符ETC...我需要打印任何未通过拼写检查的单词以及它们所在的行号。跟踪路线是我正在努力的事情。到目前为止我已经试过了,但它只返回文本文件第一行的结果:

char str[409377];
fread(str, noOfChars, 1, file);
fclose(file);

int lines=1;
char *token;
char *line;
char splitLine[] = "\n";
char delimiters[] = " ,.?!(){}*&^%$£_-+=";
line = strtok(str, splitLine);
while(line!=NULL){
token = strtok(line, delimiters);
while(token != NULL){
//print is just to test if I can loop through all the words
printf("%s", token);
//spellCheck function & logic here
token = strtok(NULL, delimiters);
}
line = strtok(NULL, splitLine);
lines++
}

是否可以使用嵌套的 while 循环和 strtok?有没有更好的方法来跟踪行号?

最佳答案

strtok函数不是可重入!它不能用于同时标记多个字符串。这是因为它保留有关当前被标记化的字符串的内部状态。

如果您有现代编译器和标准库,那么您可以使用 strtok_s反而。否则,您必须想出另一种解决方案。

关于C - 使用 strtok 的嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42357281/

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