2013-04-25 34 views
1

我有一個strtok()的問題 - 它不會像預期的那樣返回輸入。我該如何解決這個strtok()調用

void parse_input(const char *input,unsigned char *ctext, int mlen){ 
    char * str = strdup(input); 
    char * pch = strtok(str,"-"); 

    while (pch != NULL) 
    { 

    ctext[mlen] = (int) pch; 


    pch = strtok (NULL, "-"); 

    mlen++; 

    } 

1-2-3-4輸入我希望它填補CTEXT [1,2,3,4]。 但是這並不奏效。 我在做什麼錯?任何幫助讚賞。

回答

3
ctext[mlen] = (int) pch; 

存儲指針的數值不是地址,而你真正想要的人物指向通過指針。時間閱讀關於指針的好文章/書籍/教程。

ctext[mlen] = *pch; 

是你在找什麼。

1

你想要得到的pch的第一個字節的字符 - 的pch

ctext[mlen] = *pch; 
+0

看來我們有一個新的非常活躍的參與者在C標籤。歡迎來到Stack Overflow。 – 2013-04-25 20:50:34

+0

謝謝〜微笑〜 – 2013-04-25 20:51:26

0
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

void parse_input(const char *input,unsigned char *ctext[], int *mlen){ 
    char * str = strdup(input); 
    char * pch = strtok(str,"-"); 

    while (pch != NULL){ 
     ctext[(*mlen)++] = (unsigned char*)pch; 
     pch = strtok (NULL, "-"); 
    } 
} 

int main(void){ 
    unsigned char *ctext[16]; 
    int mlen=0; 
    int i; 

    parse_input("1-2-3-4", ctext, &mlen); 
    printf("[ "); 
    for(i=0;i<mlen;++i){ 
     printf("%s", ctext[i]); 
     if(i<mlen -1) 
      printf(", "); 
    } 
    printf(" ]\n"); 
    //free(ctext[0]); 
    return 0; 
} 
+0

只有ctext的情況下只有一個字符:其他答案。 – BLUEPIXY 2013-04-25 21:44:22