kod ascii

0

Czemu mi ten kod wyswietla 2 razy kod ascii i te dwa kody sa rozne do tego )

#include <ctype.h>

int main()
{
    int kod_ascii;
    while(1){  
    printf("Podaj znak lub liczbe\n");
    kod_ascii = getchar();
    printf("Kod ASCII: %d \n",kod_ascii);
    if(kod_ascii == 35)
        break;
    }
} ```  
wypisuje mi to :
Podaj znak lub liczbe                                                                                                                         
3                                                                                                                                             
Kod ASCII: 51                                                                                                                                 
Podaj znak lub liczbe                                                                                                                         
Kod ASCII: 10
0

A jaki kod ascii ma znak '3'? I co ci wyświetla 2 razy?
Raz wpisujesz z klawiatury znak to go masz w terminalu a potem wyświetla ci kod ascii tak jak chcesz. Przecież wydaje się poprawne.

0
szweszwe napisał(a):

A jaki kod ascii ma znak '3'? I co ci wyświetla 2 razy?
Raz wpisujesz z klawiatury znak to go masz w terminalu a potem wyświetla ci kod ascii tak jak chcesz. Przecież wydaje się poprawne.

Patrz,wyświetla mi jeszcze 10, co to za liczba?

4
Pablo1999 napisał(a):

Patrz,wyświetla mi jeszcze 10, co to za liczba?

Dziesięć.

0
Azarien napisał(a):
Pablo1999 napisał(a):

Patrz,wyświetla mi jeszcze 10, co to za liczba?

Dziesięć.

Dobrze, ale ta dziesiatka mi wyswietla sie zawsze...Nie chcę jej!

3

Masz dostęp tylko do tego forum? Nie potrafisz sobie wpisać w internecie kodów ascii i sprawdzić co jest dla 10?
Jeśli nie, to odpowiadam, że znak nowa linii.

0
szweszwe napisał(a):

Masz dostęp tylko do tego forum? Nie potrafisz sobie wpisać w internecie kodów ascii i spradzić co jest dla 10?
Jeśli nie, to odpowiadam, że znak nowa linii.

Jak usunę "\n" nic się nie zmieni...

3

Funkcja getchar() jest dziwna.

To znaczy, robi bardzo dziwną rzecz. Pierwsze wywołanie getchar() blokuje program, czeka na wpisanie ciągu znaków zakończonego Enterem i zwraca tylko pierwszy wpisany znak.
Kolejne wywołania getchar już nie są blokujące, tylko zwracają kolejne znaki wczytane za pierwszym razem, łącznie z tym Enterem, aż do wyczerpania znaków.

Dlatego twój program zachowuje się w ten sposób:

Podaj znak lub liczbe
Ala ma kota
Kod ASCII: 65
Podaj znak lub liczbe
Kod ASCII: 108
Podaj znak lub liczbe
Kod ASCII: 97
Podaj znak lub liczbe
Kod ASCII: 32
Podaj znak lub liczbe
Kod ASCII: 109
Podaj znak lub liczbe
Kod ASCII: 97
Podaj znak lub liczbe
Kod ASCII: 32
Podaj znak lub liczbe
Kod ASCII: 107
Podaj znak lub liczbe
Kod ASCII: 111
Podaj znak lub liczbe
Kod ASCII: 116
Podaj znak lub liczbe
Kod ASCII: 97
Podaj znak lub liczbe
Kod ASCII: 10
Podaj znak lub liczbe

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