2016-11-20 96 views
0

我查看了相關主題,嘗試了一些示例,但沒有發現任何可以幫助我的東西。C字符串分隔

我正在採取一個輸入的字符串例如炭STR [50] 它具有以下格式刪除1 1 移除可以是具有不同長度 另一個字整數的數目可以是超過2 我需要每個字符串的一部分存儲在不同變量的數值INT如果可能

我試圖使用strcmp stracat的strtok的strstr但顯然我失去了一些東西

char str[] = "Remove 2 3 2"; 
char * pch; 
char split[50]; 
printf("Splitting string \"%s\" into tokens:\n", str); 
pch = strtok(str, " "); 
while (pch != NULL) { 
    printf("%s\n", pch); 
    strcat(split,pch); 
    printf("\nThe string is %s",split); 
    pch = strtok(NULL, " "); 
} 

這是我最新的嘗試。我想要做的是刪除空格字符,然後我可能會識別刪除後面的單詞。如果它是刪除或它是與strstr一些其他詞。但如何獲得分隔的數值?這是我的輸出如何擺脫這些字符

The string is ��_o�Remove2 

    The string is ��_o�Remove23 

    The string is ��_o�Remove232 

    The string is ��_o�Remove232 
+0

是刪除字符感謝@ user3121023 –

回答

0

據我瞭解,你可以在每串組成想成爲一個獨立的變量,那麼爲什麼不使用數組呢?

只檢查空間,而忽略他們

char str[] = "hi 1 2 3"; 
    char store[100]; 
    int i=0,j=0; 

    for(i = 0,j = 0; i <= strlen(str); i++){ 
     if(str[i] != 32) { // value of space is 32 
       store[j] = str[i]; 
       j++; 
     } 
    } 

    for(i = 0; i < strlen(store); i++){ 
     printf("%c\n",store[i]); 
    } 

輸出:

h 
i 
1 
2 
3 
1

strcat連接。我相信你想要的是逐個獲取分割的部分,而不是連接它們。

所以你最好嘗試這樣的事:

char split[MAX_NUM_TOKENS][50]; 
int num_tokens = 0; 

而不是strcat的,使用這樣的:

strcpy(split[num_tokens], *pch); 
printf("The string is %s\n",split[num_tokens]); 
num_tokens++; 
+0

我覺得我做你說什麼,我只拿到了打印的字符串是刪除多次[鏈接] http://pastebin.com/mn337qXY –

+0

好吧,我已經得到了分段錯誤 –

+0

@ThomasJeffrey是的。 strcpy應該有'pch'而不是'* pch'。我的錯。 –