C程序使用strtok查找字符串中的单个单词

时间:2013-05-20 22:20:57

标签: c strtok

我正在编写一个程序,我使用strtok来查找我在命令行中键入的字符串中的每个单词,在我的示例中,我的代码名为command.c,所以当我输入:

./command.out "Hi, there" 

我应该得到我的结果:

Arg = "Hi, there"
Next word "Hi,"
Next word "there"

到目前为止,我的代码将完成print语句的arg部分,但是为了分离有问题的字符串,不会使用执行后一部分,我的代码目前如下:

#include <stdio.h>
#include <string.h>

void main (int argc, char *argv[]) {
  int i;

  for(i =1;i< argc; i++)
    printf("Arg = %s\n", argv[i]);
    char delims[] = " ";
    char *word = NULL;
    word = strtok(argv[i], delims);

    while(word != NULL) {
      printf("Next word \"%s\"\n", word);
      word = strtok(NULL, delims);
    }
}

我哪里出错了,如何修复此代码?感谢所有帮助

2 个答案:

答案 0 :(得分:7)

您错过了for区块周围的花括号:

for(i =1;i< argc; i++)
{
   printf /* ... and so forth */
}

答案 1 :(得分:0)

您的代码缩进错误,这可能会导致您的问题。

'for'语句只影响下一行printf,因此变量'i'后来增加到值'2',然后当你要求argv [i]时,你要求argv [2] ,你应该打电话给argv [1]。