我使用要解析的全局字符串。解析是从多个函数完成的。
例如,我在func1()中提取第一个标记,然后在func2()中从相同的全局字符串中提取第二个标记,等等。。。
这可能吗?我知道,在第一个标记由strtok(NULL,delimiter)完成之后提取标记,strtok将指向下一个字节的指针保存到用NULL替换的分隔符,但我找不到strtok在不同函数中完成时如何确切保存它所分隔的字符串的描述。

最佳答案

可能的。
strtok将字符串保存到静态内存中。
例如。

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

char sentence[] = "The quick brown fox jumps over the lazy dog";
char* sentencep = sentence;

char* func1(void){
    char* p = sentencep;
    if(sentencep != NULL)
        sentencep = NULL;
    return strtok(p, " ");
}

char* func2(void){
    char* p = sentencep;
    if(sentencep != NULL)
        sentencep = NULL;
    return strtok(p, " ");
}

int main(){
    puts(func1());//The
    puts(func2());//quick
    puts(func2());//brown
    puts(func1());//fox
    return 0;
}

08-07 04:02