Сканирование числа в переменную INT до новой строки - PullRequest
0 голосов
/ 09 ноября 2019

Мы делаем шифр Цезаря, где первая строка - это количество символов, вторая - зашифрованное сообщение, а третья строка - частично правильный ответ.

Шифр ​​Цезаря завершен, но я могутолько сканировать данные из консоли, а не из реальных файлов на данный момент.

Вопрос в том, как мне сканировать число до конца строки (символ новой строки), И, если строка содержит что-то отличное от фактическогоцелые числа (4a4, a44, 44a, a), вывести ошибку?

1 Ответ

0 голосов
/ 09 ноября 2019

Чтение с fgets(), а затем анализ

char buf[100];
if (fgets(buf, sizeof buf, stdin)) {
  char *endptr;
  long integer_var = strtol(buf, &endptr, 10);
  if (buf == endptr) puts("No conversion");
  else {
    while (isspace((unsigned char) *endptr)) endptr++; // consume trailing white-space. 
    if (*endptr) puts("Junk at end");
    else puts("Success");
  }
}
...