所以我试图在数组中添加标记,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");
}
}
答案 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");
}