c - strtok 在调用函数中不起作用

标签 c strtok

strtok()正在崩溃。它在 main() 中起作用,但在 call 函数中不起作用。 请建议我。谢谢。

int checkNumberOfTokens (char* text, char* delimitChar) {

    int numberOfTokens = 0;
    char *t;
    int i;

    printf("Text: %s\n", text);  
    printf("delimitChar: %s\n", delimitChar);

    t = strtok(text, delimitChar);

    for (i=0; t != NULL; i++) {
        printf("token %d is \"%s\"\n", i, t);
        t = strtok(NULL, delimitChar);
        }

        numberOfTokens = i;
        printf("Total number of tokens: %d\n", numberOfTokens);    

        return numberOfTokens;
}




int main()

    char* transitionTable[] = {
                              "NA, NA, NA, NA, NA, NA",
                              "defaultStart, elseOther, 1, 2, 6, NA",

          };

          printf("%s \n", transitionTable[1]);

    char delimitChar[] = ",";

    checkNumberOfTokens (transitionTable[1], delimitChar);

最佳答案

strtok 输入字符串必须可写,因为 strtok 会修改输入字符串。但是您传递的是字符串文字,并且字符串文字是不可修改的。

请参阅有关字符串文字的 c-faq:

http://c-faq.com/decl/strlitinit.html

关于c - strtok 在调用函数中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20011295/

相关文章:

c - 使用 strtok() 函数时的内存分配

c - 从C中的文件中逐行读取

c - 64位机器内存分配

c - 执行需要 ext lib 的 C 脚本

c++ - C/C++ 需要本地函数原型(prototype)吗?

c - strtok坏了吗?或者只是棘手?

c - 检测 char 数组中有多少行

c - printf 在打印时如何知道 strtok 标记的结尾?

c - 如何打印另一个进程的信息?

c - 函数 ‘strtok_r’ 的隐式声明尽管包含 <string.h>