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