簡體   English   中英

我該如何修復這個strtok()調用

[英]How can I fix this strtok() call

我有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這樣的輸入上,我希望它用[1,2,3,4]填充ctext。 但是,這不起作用。 我究竟做錯了什么? 任何幫助贊賞。

ctext[mlen] = (int) pch;

它存儲指針的數值,而你真的想要指針指向的字符。 是時候閱讀關於指針的好文章/書籍/教程了。

ctext[mlen] = *pch;

是你在找什么。

你想獲得的第一個字節的字符pch -沒有地址pch

ctext[mlen] = *pch;
#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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM