Wczytywanie znaków przy pomocy fgets, problem z konwersją znaków na typ calkowity

0

Witam,
Chce za pomocą fgets sprawdzać co zostało wpisane z klawiatury i następnie, jeśli zostało poprawnie wpisane ( w tym wypadku chodzi mi o liczby) rzutowanie na inta. Wymyśliłem sobie, że będę wczytywał kolejne znaki, od końca tablicy, do której zostały zapisane przez fgets i rzutował je na int z odpowiednim mnożnikiem, czyli:


#include <stdio.h>

int main(){
  printf("Podaj liczbe\n");
  
  char tab[20];
  
  fgets(tab, 20, stdin);
  
  int dlugosc;
  
  for(int i = 0; i < 20; i++){
    if(tab[i] == '\0'){
      dlugosc = (i - 2);
      break;
    }
  }
  
  int liczba = 0;
  int mnoznik = 1;
  
  for(int i = dlugosc; i >= 0; i--){
    if(tab[i] >= 48 && tab[i] <= 57){
      liczba += ((int)tab[i] - 48) * mnoznik;
      mnoznik *= 10;
    }
    else{
      printf("Nie poprawne dane!\n");
      return 0;
    }
  }
  
  printf("%d\n",liczba);
}

 

Czy jest jakiś wygodniejszy/prostyszy sposób? Ewentualnie jakaś wygodniejsza metoda? Oprócz scanf.

1 użytkowników online, w tym zalogowanych: 0, gości: 1