C typ char

PL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Witam

Dopiero zaczynam swoją przygodę z jezykiem C. Uczę się z ksiązki Stephena Praty. Jest bardzo fajnie napisana i w wiekszości wszystko rozumiem ale nie znalazłem odpowiedzi na jedna , interesująca mnie rzecz. Mianowicie chodzi o taka rzecz

Kopiuj
 
scanf("%c", &ch);
printf("%c\n",ch);

po zadeklarowaniu zmiennej typ char uruchamiam program. Mogę wpisac dowolny znak i go wyświetli. Natomiast jesli wpisze liczbę dwucyfrową dajmy na to 33 to już program jej nie wyświetli, wyświetla mi 3.

Moje pytanie jest takie, czy funkcja scanf("%c", &ch); pobiera tylko 1 znak?

Pozdrawiam
Piotr

kaczus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Łódź
  • Postów: 1404
0
PiotrekL napisał(a):

Moje pytanie jest takie, czy funkcja scanf("%c", &ch); pobiera tylko 1 znak?

Pobiera to co zadeklarowałeś, że chcesz, by pobierało "%c" - oznacza, że chcesz by pobierał znak.

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
0

No tak, %c to jeden znak.

Można podać długość pola, tzn.%Nc gdzie N to jakaś liczba, żeby wczytać N znaków do tablicy typu char. Taka tablica nie będzie zakończona znakiem \0. Dlatego do wczytywania większej ilości znaków (ale bez białych znaków) należy użyć %s.

Poczytaj: http://www.cplusplus.com/reference/cstdio/scanf/

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Zerkamy do dokumentacji a tam
http://www.cplusplus.com/reference/cstdio/scanf/

c Character The next character. If a width other than 1 is specified, the function reads exactly width characters and stores them in the successive locations of the array passed as argument. No null character is appended at the end.

PL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Hej

Dziękuje za wyczeprującą odpowiedź i za linka. Bardzo dobrze to wyjaśnia. Baza wiedzy będzie dobrym uzupełnieniem książki

Pozdrawiam
Piotrek

kaczus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Łódź
  • Postów: 1404
0
Endrju napisał(a):

Dlatego do wczytywania większej ilości znaków (ale bez białych znaków) należy użyć %s.

zamiast używać %s w scanf lepiej użyć fgets.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.