代码之家  ›  专栏  ›  技术社区  ›  Rami Jarrar

如何从这条线上获取数组?

  •  0
  • Rami Jarrar  · 技术社区  · 14 年前

    所以我有下面一行

    BOOK_NAME_VALUE STRING Programming
    

    我需要一个数组包含这个

    a[0] = "BOOK_NAME";
    a[1] = "VALUE";
    a[2] = "STRING";
    a[3] = "Programming";
    

    数组的第二个值是行的第一部分的最后一部分; 行分隔符是空格'' 第一部分分隔符是'uu'

    你知道吗??

    更新

    我是为第二次分离做的,需要短一点的方法吗??

    #include<string.h>
    
    char **str_tok(char *str,char* d){
        char *out[2];
        char *s;
        char *c;
        int toks = noToks(str,d);
        int i = 0;
    
        s = strtok(str,d);
        i++;
        while(i != toks){
            strcat(s, d);
            c = strtok(NULL,d);
            i++;
            strcat(s,c);
        }
        strcpy(out[0],s);
        c = strtok(NULL,d);
        strcpy(out[1], c);
    
        return out;
    }
    
    int noToks(char *str,char *d){
        int c = 0;
    
        while(*str)
            if(*str == *d){
                c++;
                str++;
            }
        return c;
    }
    
    2 回复  |  直到 12 年前
        1
  •  1
  •   Jack    14 年前

    看一看 strtok 函数,用于根据一组指定的分隔符拆分字符串。

    阅读 here 找到函数的文档和一些例子。。基本上你打电话

    char *cur = strtok(your_string," ");
    

    要获取第一个字符串,然后可以继续使用 NULL 获取连续片段的参数:

    while (cur != NULL) {
      // do whatever
      cur = strtok(NULL," ");
    }
    
        2
  •  1
  •   Poni    14 年前

    弗斯特 用空格分隔字符串 ,它将给出三个字符串(数组)。
    然后简单地 在第一个字符串中查找最后一个“\u” 在上面的字符串数组中。
    全部合并成一个新数组。

    我放了一些代码,但这非常简单,如果你正在学习C,那么我建议你自己寻找函数。我给了你方向。

    希望有帮助。