Реализовать проверку ввода целого числа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть обычный запрос ввода целого числа:
int n;
...
printf("ВВедите позицию n: ");
scanf("%d", &n);
Как реализовать проверку, чтобы если введено не число (а например какая либо буква), то повторяло запрос на ввод. Спасибо.

Решение задачи: «Реализовать проверку ввода целого числа»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(){
int n;
int length;
int i,flag;
char str[80];
 
while(1){
    i=1;
    flag=1;
    printf("write: ");
    scanf("%c",&str[0]);
    if(!((str[0]>48&&str[0]<58)||str[0]==45)){flag=0;}
    while(1){
        scanf("%c",&str[i]);
        if(str[i]==*"\n"){break;}
        if(str[i]<48||str[i]>58){flag=0;}
        i++;
    }
    if(flag==1){break;}
}
n=atoi(str);
 
return 0;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с консолью и строками

    include

    include

    include

  2. Объявляем переменные: — n - для хранения целочисленного значения — length - для хранения длины строки — i - для итерации по символам строки — flag - для контроля корректности ввода — str - массив символов для хранения введенной строки
  3. Запускаем бесконечный цикл, прерываемый только при корректном вводе while(1){
  4. Устанавливаем начальные значения переменных: — i = 1 — flag = 1
  5. Выводим приглашение для ввода printf(write:);
  6. Считываем первый символ scanf(%c,&str[0]);
  7. Проверяем, является ли первый символ числом или знаком пунктуации if(!((str[0]>48&&str[0]<58)||str[0]==45)){flag=0;}
  8. Считываем остальные символы до конца строки или до появления символа новой строки while(1){ scanf(%c,&str[i]); if(str[i]==*\n){break;} if(str[i]<48||str[i]>58){flag=0;} i++; }
  9. Если все символы являются числами, то флаг равен 1, иначе - 0
  10. Если флаг равен 1, то выходим из цикла
  11. Преобразуем строку в целое число и сохраняем его в переменной n n=atoi(str);
  12. Завершаем программу return 0; }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы