gpt4 book ai didi

c - 为什么 strtok 会这样改变它的输入?

转载 作者:太空狗 更新时间:2023-10-29 16:31:40 25 4
gpt4 key购买 nike

好的,所以我知道 strtok 修改了它的输入参数,但在这种情况下,它只是将输入字符串折叠成第一个标记。为什么会发生这种情况,我该如何解决? (请注意,我不是在谈论变量“temp”,它应该是第一个标记,而是变量“input”,它在调用 strtok 后变成“this”)

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[]) {
char input[]="this is a test of the tokenizor seven";
char * temp;
temp=strtok(input," ");
printf("input: %s\n", input); //input is now just "this"
}

最佳答案

strtok() 找到一个标记时,它会将紧跟在该标记后面的字符更改为 \0,然后返回一个指向该标记的指针。下次您使用 NULL 参数调用它时,它会开始查找终止第一个标记的分隔符——即,在 \0 之后,可能更远。

现在,指向字符串开头的原始指针仍然指向字符串的开头,但第一个标记现在以 \0 结尾——即 printf() 认为 token 的结尾是字符串的结尾。其余数据仍然存在,但 \0 阻止 printf() 显示它。如果您使用 for 循环遍历原始输入字符串直至达到原始字符数,您会发现数据仍然存在。

关于c - 为什么 strtok 会这样改变它的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9406475/

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