struct TokenizerT_ {
char* separators;
char* tks;
char* cur_pos;
char* next;
};
typedef struct TokenizerT_ TokenizerT;
TokenizerT *TKCreate(char *separators, char *ts)
{
TokenizerT *tokenizer;
tokenizer = (TokenizerT*)malloc(sizeof(TokenizerT));
//some manipulation here
tokenizer->tks = (char*) malloc (strlen(str)* sizeof(char));
tokenizer->tks=str;
printf("size of tokenizer->tks is %zu\n", strlen(tokenizer->tks)); //this prints out the correct number (e.g. 7)
return tokenizer;
}
int main(int argc, char **argv)
{
TokenizerT *tk = TKCreate(argv[1], argv[2]);
printf("tk->tks: %zu\n", strlen(tk->tks)); //HOWEVER, this prints out the wrong number (e.g. 1)
}
위 코드에서 알 수 있듯이 구조체에 대한 포인터로 작업하고 있습니다. 어떤 이유로 나는 tk-> tks에 대한 정확한 길이를 수신하지 못하고있다. TKCreate 함수에서 tks와 크기가 같아야하므로 이해할 수 없습니다. 누군가 설명해 주실 수 있습니까? 당신의 코드에 표시되지 않습니다 정의에있는 내가 str을 의심구조체를 가리키는 포인터
네 말이 맞아. 내가 어떻게 고칠 수 있니? – user1363410
방금 두 번째 단락을 추가하여 수정 사항을 설명했습니다. 도움이되는지 확인하십시오. –