Дифференцировать сканирование одного символа или нескольких - PullRequest
0 голосов
/ 04 декабря 2018

Мне нужно по-разному сканировать один символ или несколько одновременно и подтвердить это, нажав клавишу ввода (без CTRL + D).

    do{
        scanf(" %c%c", &letters[i],&temp);
        i++;
      }while(temp != '\n');

Это работает для одного символа, но когда я ввожу несколько символов и нажимаювведите его, он ждет другого входа.Мне нужно выяснить это, просто нажав Enter один раз.

1 Ответ

0 голосов
/ 04 декабря 2018

Дифференциальное сканирование одного символа или нескольких

Подход OP не выполняется, поскольку " " использует любые пробелы, включая '\n', и может не быть пойман как temp.

// Troublesome code
do {
  scanf(" %c%c", &letters[i],&temp);
  i++;
} while(temp != '\n');

Ищите '\n'.Может сделать это посимвольно.

#define N 2
char letters[N]; 
size_t i = 0;
int ch;
while ((ch = getchar()) != '\n' && ch != EOF) {  // Loop until \n found
  if (i < sizeof letters) {                      // Save up to N characters.
    letter[i++] = ch;
  }
}

// Limit output with a precision                     v----------vvvvvvv 
printf("%zu characters entered: The first few are <%.*s>\n", i, (int) i, letters);
...