Problem z getchar

0

Witam, zaczynam uczyć się programowania, mam takie pytanie: dlaczego po wpisaniu kodu:

#include<stdio.h>

int main()
{
	int i;
	i = getchar();
	printf("Przeczytano znak o numerze %i.", i);

	return 0;
}

i wpisaniu w konsolę cyfry 7, wyświetla się napis Przeczytano znak o numerze 55?
Program to Visual Studio 2019. Nie mam pojęcia o co chodzi.

2

7 to znak o kodzie 5510, lub heksadecymalnie 47.

https://pl.wikipedia.org/wiki/ASCII

0

Ok, rozumiem. To co w takim razie zrobić, żeby wyświetliło się to co wpisuję?

1

Wyświetl jako znak, nie inta. A jak chcesz operować na stringach (ciągach znaków) to operuj na stringach.

0

Wyświetliłem jako znak i już jest dobrze, dziękuję.

1

getchar jak sama nazwa wskazuje pobiera znak, a więc typem zmiennej, która przechowa ten znak powinien być char :P wyświetliło się 55, bo zaszło rzutowanie z char->int przy czym jak już @kq wspomniał oznacza to kod ascii danego znaku.

0
Sunnydev napisał(a):

getchar jak sama nazwa wskazuje pobiera znak, a więc typem zmiennej, która przechowa ten znak powinien być char :P wyświetliło się 55, bo zaszło rzutowanie z char->int przy czym jak już @kq wspomniał oznacza to kod ascii danego znaku.

Dziękuję za wyjaśnienie

0

getchar zwraca int (kod ascci znaku) aby oprócz znaków 0..255 móc zwrócić EOF (-1) w przypadku braku znaku, kiedy czytany strumień się skończył.
Np wejście przekierowano z pliku, lub naciśnięto <Ctrl-Z> (<Ctrl-D> pod linuksem).

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