gpt4 book ai didi

c - 如何保存 strtok_r() 中剩余的字符串?

转载 作者:行者123 更新时间:2023-11-30 16:16:09 26 4
gpt4 key购买 nike

我试图弄清楚如何提取需要解析的剩余字符串(strtok_r() 的第三个参数),但不知道如何执行此操作。初始输入来自于 malloc() 定义的 char 指针。

下面的代码是我想要实现的目标。

num = strtok_r(raw_in, delim, &rest_of_nums);

while(rest_of_nums != NULL){

while(num != NULL){

//Compare num with fist digit of rest_of_nums
num = strtok_r(NULL, delim, &rest_of_nums);

}
//Iterate to compare num to second digit of rest_of_nums
}

最佳答案

我认为您试图混淆 strtok()strtok_r()strtok()的语法如下:

char * strtok ( char * str, const char * delimiters );

strtok_r()语法如下:

char * strtok_r ( char * str, const char * delimiters, char **saveptr );

当我们第一次调用 strtok() 时,该函数需要一个 C 字符串作为 str 的参数,其第一个字符用作扫描标记的起始位置。在后续调用中,该函数需要一个空指针,并使用最后一个标记末尾之后的位置作为新的扫描起始位置。找到最后一个标记的点由函数内部保存,以便在下次调用时使用。

但是,在 strtok_r() 中,第三个参数 saveptr 是一个指向 char * 变量的指针,该变量由 内部使用>strtok_r() 以便维护解析同一字符串的连续调用之间的上下文。

strtok_r() 的示例如下:

    char str[] = "sample strtok_r example gcc stack overflow";
char * token;
char * raw_in = str;
char * saveptr;
//delimiter is blank space in this example
token = strtok_r(raw_in, " ", &saveptr);
while (token != NULL) {
printf("%s\n", token);
printf("%s\n", saveptr);
token = strtok_r(NULL, " ", &saveptr);
}

输出应如下所示:

sample
strtok_r example gcc stack overflow
strtok_r
example gcc stack overflow
example
gcc stack overflow
gcc
stack overflow
stack
overflow
overflow

来源:

http://www.cplusplus.com/reference/cstring/strtok/

https://www.geeksforgeeks.org/strtok-strtok_r-functions-c-examples/

欢迎提问。

关于c - 如何保存 strtok_r() 中剩余的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56745366/

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