Język C rozróżnienie napisu od liczby.

Awatar użytkownika
Andrzejmm
Użytkownik
Użytkownik
Posty: 187
Rejestracja: 19 lis 2006, o 16:24
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 58 razy
Pomógł: 13 razy

Język C rozróżnienie napisu od liczby.

Post autor: Andrzejmm »

Wprzód zamieszczę program:

Kod: Zaznacz cały

#include<stdio.h>
main()
{
  long a;
  scanf("%ld",&a);
  if(a=='A')printf("Otrzymano A\n");
  else printf("Otrzymano liczbę\n");
}
Po wprowadzeniu na standardowe wejście liczby 65 otrzymuję, że jest to litera A. Co uczynić, aby program nie popełniał tego błędu? Tzn, aby prawidłowo rozróżniał litery od cyfr.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Język C rozróżnienie napisu od liczby.

Post autor: soku11 »

Ja zawsze korzystam z nieco dlugiego sposobu. Jest nim sczytywanie od uzytkownika ciagu znakow do tablicy i kombinacja na tej tablicy. Tzn, np kod funkcji, ktora sprawdza czy wczytano tylko liczbe:

Kod: Zaznacz cały

int zwroc_liczbe(char ciag[],int rozmiar)
{
  int x=0,liczba_pos=0;
  char liczba[rozmiar];
  
  while(ciag[x++])
    if(ciag[x]>='0' && ciag[x]<='9')
      liczba[liczba_pos++]=ciag[x];
    else return -1;
  return atoi(liczba);
}// zwraca -1 jak blad lub liczbe jesli wczytalo dobrze
POZDRO
Awatar użytkownika
Andrzejmm
Użytkownik
Użytkownik
Posty: 187
Rejestracja: 19 lis 2006, o 16:24
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 58 razy
Pomógł: 13 razy

Język C rozróżnienie napisu od liczby.

Post autor: Andrzejmm »

Dzięki.
ODPOWIEDZ