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的大小相同。有人可以解釋這個嗎?指向c中的結構的指針
你是對的。我怎樣才能解決這個問題? – user1363410
我剛剛添加了第二段來解釋此修復程序。看看是否有幫助。 –