2010-11-12 40 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,那麼我建議你自己去尋找函數。我給你方向。

希望它有幫助。