6

関連するコード スニペット:

char input [1024];

printf("Enter text. Press enter on blank line to exit.\n");
scanf("%[^\n]", input);

これにより、ユーザーが [enter] を押すまで行全体が読み込まれ、ユーザーが 2 行目を入力できなくなります (必要な場合)。

終了するには、[Enter] を押してからもう一度 [Enter] を押します。そのため、あらゆる種類の while ループ、for ループ、および改行エスケープ シーケンスを含む scanf() の周りの if ステートメントを試しましたが、何も機能していないようです。

何か案は?

4

6 に答える 6

0

OPは「終了するには、[Enter]を押してからもう一度[Enter]を押します」と言います

unsigned ConsecutiveEnterCount = 0;
for (;;) {
  char buffer[1024];
  if (fgets(buffer, sizeof(buffer), stdin) == NULL) {
    break;  // handle error or EOF
  }
  if (buffer[0] == '\n') {
    ConsecutiveEnterCount++;
    if (ConsecutiveEnterCount >= 2 /* or 1, not clear on OP intent */) {
      break;
    }
  }
  else ConsecutiveEnterCount = 0;
  // Do stuff with buffer;
}
于 2013-08-23T17:22:19.513 に答える
-2

次の行から入力を読み取りたい場合は、次の関数を使用できます。

scanf("%d \n",&a);
scanf("%d \n",&b);
scanf("%d ",&c);

コマンドラインから入力を提供している場合、行の変更後に別の入力が必要になります。

于 2016-06-22T21:59:11.923 に答える