C:令牌系统令牌化,但执行 if 语句失败

C: Token system tokenize, but doing if statements fail

我有这个小功能,假设是解析标记。

void LWDL_Parse(LWDL_Data data, LWDL_State state) {
  char ch;
  LWDL_string contents = "lwdl_data\n";
  LWDL_Array tokens;
  LWDL_TOOL_INIT_ARRAY( & tokens, 5); // 5 is starting size. 

  while ((ch = fgetc(state.LWDL_File)) != EOF) {

    contents = LWDL_TOOL_AppendCharacters(contents, ch);

  }
  LWDL_string chunks;
  const char remove[4] = "   \n";
  chunks = strtok(contents, remove);
  while (chunks != NULL) {
    chunks = strtok(NULL, remove);

    if (chunks != NULL){
    LWDL_TOOL_INSERT_ARRAY( & tokens, chunks);
    }

   
  }

    LWDL_TOOL_FREE_ARRAY(&tokens);
}

但是使用令牌数组或块执行 if 语句失败。

if (tokens.array[0] == "token"){
       printf("works!\n");
}

有关如何解决此问题的任何线索。如果我对所有元素执行 for 循环,它们都会被正确解析。

您需要使用 strcmp 之类的比较函数,而不是 tokens.array[0] == "token"

我希望这样:

if (chunks != NULL){
LWDL_TOOL_INSERT_ARRAY( & tokens, chunks);
}

应该在第二次调用 strtok()

之前

否则将忽略第一个标记