Мне нужен способ принимать только буквы в верхнем регистре - PullRequest
0 голосов
/ 24 октября 2019

Мне нужен способ принимать только буквы UPPERCASE, и я хочу использовать ELSE, чтобы напечатать ошибку (или наоборот), чтобы получить удовольствие от кодировки длины серии, но, похоже, она не работает.

Каждый раз, когда я вводю хотя бы один символ, например, A или B. - это выдает ошибку.

Это не то, на что действительно похож код, важны операторы IF и ELSE.

#include <stdio.h>

int main()
{
    char current, previous = 0;
    int AoR = 0, unc_am, am, first = 0;

    while(scanf("%c", &current) != EOF)
    {
        if(current <= 'Z' && current >= 'A')
        {RLE}
        else
        {printf error}
    }
}

Что я делаю не так? Спасибо.

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Изменение:

scanf("%c", &current);

на:

scanf(" %c", &current)

, как прокомментировал @kiranBiradar. Я суммировал причину этого в Внимание, когда читал char с scanf .

PS: Вы можете использовать isupper(), который проверяет, является ли символ заглавными, как прокомментировал @gerhardh.

0 голосов
/ 24 октября 2019

Вы должны проверить и пропустить терминаторы строки. Они тоже персонажи ...

#include <stdio.h>

int main(void) {
  char c;
  while (scanf ("%c", &c) == 1)
    {
      printf("0x%02X ", c);
      if (c == '\n')
        printf("\n");
    }
  return 0;
}

Бег:

ABC
0x41 0x42 0x43 0x0A
DefG
0x44 0x65 0x66 0x47 0x0A
H
0x48 0x0A
i
0x69 0x0A
...