strtok不断回复同一个词

时间:2015-04-16 04:35:15

标签: c

我正在编写以下程序,从文件中读取一些文本。然后我想把这个文本分成几个空格。我使用strtok(buffer, " ")在空格之前获取缓冲区的第一个单词。那部分工作正常。然而,在我使用strtok(NULL, " ")后,我得到了相同的第一个单词。我期待着回到下一个词。将数组传递给声明为以下char* buffer[BUFFER_SIZE]的函数:

int decoder(char *buffer)
{
    int reg_1 = 0;
    int reg_2 = 0;

    char *tok = strtok(buffer, " "); 

    if(strcmp(tok,"ADD") == 0)
    {
        strtok(NULL, " ");
        puts(tok);

        strtok(NULL, " ");
        puts(tok);
    }            
}

2 个答案:

答案 0 :(得分:5)

您忘记将稍后调用的结果分配给strtok()。他们应该看起来像:

tok = strtok(NULL, " ");

答案 1 :(得分:-2)

int decoder(char *buffer)
{
   int reg_1 = 0;
   int reg_2 = 0;

   char *tok = strtok(buffer, " "); 

   if(strcmp(tok,"ADD") == 0)
   {
      puts(tok);
      tok=strtok(NULL, " ");


   }            
}

必须将strtok()返回的指针分配给tok