1

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

./command.out "Hi, there" 

我应该得到我的结果:

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

到目前为止,我的代码将完成 print 语句的 arg 部分,但不会使用 execute 后半部分来分隔有问题的字符串,我的代码目前如下:

#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);
    }
}

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

4

2 回答 2

7

您缺少块周围的花括号for

for(i =1;i< argc; i++)
{
   printf /* ... and so forth */
}
于 2013-05-20T22:23:31.923 回答
0

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

'for' 语句只影响下一行,即 printf 行,因此变量 'i' 稍后会增加到值 '2',然后当您请求 argv[i] 时,您正在请求 argv[2],您应该调用 argv[1]。

于 2013-05-20T22:32:18.437 回答