2010-11-12 56 views
0

所以我有以下线如何从这一行获取数组?

BOOK_NAME_VALUE STRING Programming 

我需要制造阵列包含此

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

阵列的第二值是该线的第一部分的最后部分; 行分隔符是空格'' 第一部分分隔符是'_'

所以有什么想法?

UPDATE

我这样做是为第二分离过程,,需要更短的方式?

#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; 
} 
+0

您可能希望将函数'no +++''中的'str ++'移到'if'之外和'while'之内。 – pmg 2010-11-12 09:07:32

回答

1

看一看strtok功能,用来根据一组指定的分隔符分割的字符串。

here发现功能和一些实例文档..基本上你叫

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

获得的第一个字符串,然后你可以保持通话的功能与NULL参数,以获得连续的块:

while (cur != NULL) { 
    // do whatever 
    cur = strtok(NULL," "); 
} 
1

首先分裂由空格字符串,这将给三个字符串(数组)。
然后只需从上面的字符串数组中找到第一个字符串中的最后一个'_'。
将所有组合成一个新阵列。

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

希望它有帮助。