C 字符串数组 strtok()

标签 c string pointers strtok

嗨,我对 C 很陌生,整个指针与字符的关系让我非常困惑。我最难做一些非常简单的事情。

我想用分隔符 "?=&"分解一个字符串(请求),并且我想将不同的部分存储在字符串数组中,但我似乎不知道如何操作。我觉得是因为我没有完全掌握指针的概念。

这是我的代码

        char buf[1024], path[1024], request[1024], **query_string, *query_pointer;

        query_pointer = strtok(request, "?=&");
        strcpy(request, query_pointer);
        while(query_pointer != NULL) {
            strcpy(query_string, query_pointer);
            query_string++;
            query_pointer = strtok(NULL, "?=&");
        }

最佳答案

一个非常基本的起始示例。

char **foo( char **result, char *str, const char *delim)
{
    char *p=strtok(str, delim);
    int i;
    for(i=0;  p!=NULL; p=strtok(NULL, delim)
          result[i]=p;
    result[i]=NULL;
    return result;
}

void bar(char *str)
{
   char *result[36]={NULL};  // 35 max tokens
   int i=0;
   result=foo(result, str, "?=&");
   for(i=0; result[i]!=NULL && < 35; i++)
   {
        printf("%s\n", result[i]);        
   }
}

关于C 字符串数组 strtok(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170585/

相关文章:

string - 为什么要添加一个字符串和一个引用,但不能添加两个字符串? (E0308 : Mismatched types)

c++ - boost 序列化 : pointer conainer to <BASE> contains various of DERIVED objects

c - 如何使用 sscanf 查找字符串中的小写字母

java - 将字符串转换为字符数组

c - OpenGL 视口(viewport)不工作

c++ - 需要帮助弄清楚为什么我的 Reverse String c++ 程序坏了

c++ - 索引字符数组 - 指针问题

c - "void foo(int q[][4]){}"中的 q 是什么类型?使用 "void foo(int q[6][4]){}"与前者有何不同?

c - 如何在不在数据类型和变量名之间使用空格的情况下在 C 中声明变量?

c - 传递 `int (*)(char const*)`,其中应为 `int (*)(char*)`