将标记添加到数组C

时间:2014-02-27 04:49:50

标签: c arrays null token strtok

所以我试图在数组中添加标记,if语句一直在验证数组tokenHolder是否为空。我的第二个while循环是我尝试将标记输入数组的地方。但是没有令牌输入阵列,我不明白为什么。

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");
         }
     }

2 个答案:

答案 0 :(得分:1)

在保存任何令牌之前,您将pos增加到1,因此不会将任何内容分配给tokenHolder[0]

使用(注意使用空格而不是空字符串作为分隔符):

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

(或等效的)或做类似的事情:

char *data = buffer;
while ((tokenHolder[pos++] = strtok(data, " ")) != NULL)
    data = NULL;

答案 1 :(得分: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");
}