我有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。
但是,这不起作用。
我究竟做错了什么?任何帮助赞赏。
答案 0 :(得分:3)
ctext[mlen] = (int) pch;
它存储指针的数值,而你真的想要指针指向的字符。时间阅读指针上的好文章/书籍/教程。
ctext[mlen] = *pch;
是您正在寻找的。 p>
答案 1 :(得分:1)
您希望获得pch
的第一个字节中的字符 - 而不是pch
的地址
ctext[mlen] = *pch;
答案 2 :(得分: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;
}