将令牌添加到数组 C



所以我正在尝试将令牌添加到数组中,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");
         }
     }

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

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

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

(或等效项)或执行以下操作:

char *data = buffer;
while ((tokenHolder[pos++] = strtok(data, " ")) != NULL)
    data = NULL;
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");
}

相关内容

  • 没有找到相关文章

最新更新