2014-02-27 48 views
0

所以我試圖將標記添加到數組中,if語句不斷驗證數組tokenHolder是否爲空。我的第二個while循環是我嘗試向數組中輸入標記的位置。然而沒有令牌輸入到數組中,我不明白爲什麼。將令牌添加到陣列C

char* token; 
int* bufflength = 0; 
char* buffer = NULL; 
char input[25000]; 
char *tokenHolder[2500]; 
int pos = 0; 

while(1){ 

    printf("repl> "); 
    getline(&buffer, &bufflength, stdin); 
    token = strtok(buffer, ""); 

    //code to input tokens into array 
    while(token != NULL){ 
     pos++; 
     token = strtok(NULL, ""); 
     tokenHolder[pos] = token; 
     } 

     if(tokenHolder[0] == NULL){ 
      printf("It's NULL"); 
     } 
    } 

回答

1

你增加pos1您保存任何標記之前,所以沒有什麼是曾經分配給tokenHolder[0]

要麼使用(請注意使用的空白,而不是一個空字符串作爲分隔符):

tokenHolder[0] = token = strtok(buffer, " "); 

(或等同的),或者做類似:

char *data = buffer; 
while ((tokenHolder[pos++] = strtok(data, " ")) != NULL) 
    data = NULL; 
1
char *tokenHolder[2500] = { NULL }; 
... 
while(token != NULL){ 
    tokenHolder[pos++] = token; 
    token = strtok(NULL, ""); 
} 

if(tokenHolder[0] == NULL){//or if(pos == 0){ 
    printf("It's NULL"); 
}