2

ユーザーに入力を求めるプログラムを作成する必要があります (入力して終了するまでexit)。入力はコンマで区切られます (例: value,value,value)。次に、個別の値をそれぞれ独自の変数に入れる必要があります。

例:

ユーザーが を入力した場合、変数、変数、および変数に入力するhello,15,bye必要があります。hellofirst15secondbyethird

これが私がこれまでに持っているものです:

int main(void) {
  char input[100];
  char first[100];
  char second[100];
  char third[100];

  printf("Enter commands: ");

  while(fgets(input, 100, stdin)) {
    if(strncmp("exit", input, 4) == 0) {
      exit(0);
    }

    // missing code
  }
}

入力をコンマで区切り、値を独自の変数に追加するにはどうすればよいですか?

4

1 に答える 1

4

セットの使用sscanf()とスキャン:

if (sscanf(input, "%99[^,],%99[^,],%99[^,\n]", first, second, third) != 3)
    ...oops...

文字列が 100 として定義されているため、99 が表示されます。これにより、オーバーフローが発生しないことが保証されますが、入力行も 100 であるため、オーバーフローは問題になりません。

スキャン セットのうちの 2 つは%99[^,]、限定された形式の正規表現のように見えます。キャレットは「否定されたスキャン セット」を意味するため、文字列はカンマ以外のすべてに一致します。最後は%99[^,\n]カンマだけでなく改行も除外します。

変換指定の前にスペースを追加すると、名前の先頭の空白をスキップできます。末尾の空白を簡単に避けることはできません。問題がある場合は、変換が成功した後に削除してください。

于 2013-09-23T01:24:31.197 に答える