1

コマンドラインに入力した文字列内の各単語を見つけるために 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);
    }
}

どこが間違っているのか、このコードを修正するにはどうすればよいですか? 助けてくれてありがとう

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 に答える