C typ char

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

 
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

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.

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/

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.

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

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.

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