Jak rozpoznać jaki znak został wprowadzony

0

Witam, pisze program ktrory rozpoznaje np czy jest do duza litera czy mala czy cyfra, nie wiem jak zrobic aby program rozpoznal ze uzytkownik wcisnal enter i wyswietlil o tym informacje wiem ze enter to 13 znak.

char z;

printf("Wcisnij klawisz : ");

fflush(stdin);
z = getchar();


if (znak == 13)
{
    printf("Enter\n");
}

zrobilem tak ale nie dziala. Mam tez problem ze strzalkami w lewo prawo prosze o odpowiedz i wytlumaczenie

2

Pewnie dlatego, że dostajesz '\n', czyli 10. Wypisuj nieznane znaki jako liczby - tak będzie łatwiej.

2
if (znak == '\n') 
1
  1. Używasz magic value, tj. dziwnego 13 zamiast '\n' i dziwisz się, że nie działa.
  2. getchar zwraca int, nie char.
0

A co np ze znakiem ESC oraz strzałkami ???

0

A co np ze znakiem ESC oraz strzałkami ???

Możesz użyć funkcji getch() z <conio.h>,

char ch = getch(); // <conio.h>
if(unsigned(ch) == 27u){
    printf("escape\n"); 
1

Biorąc pod uwagę inny watek tego usera: http://4programmers.net/Forum/C_i_C++/278230-kod_ascii
Problemem jest użycie getchar() i braku wiedzy jak działa standardowe wejście.
Odpowiedzią są zewnętrzne biblioteki zncurses lub conio.

0

z = getchar();

getchar() jest dziwną funkcją.

  1. Pierwsze jej wywołanie powoduje czekanie na wpisanie tekstu z klawiatury, zakończonego enterem. Tekst jest zapamiętywany, a zwracany jest pierwszy jego znak.
  2. Kolejne wywołania getchar zwracają kolejne znaki z tego tekstu (bez czekania), aż do wyczerpania znaków, po czym następuje powrót do punktu 1.

fflush(stdin) nie ma w standardzie C i C++. Wiem że pod Linuxem jest to zdefiniowane jako czyszczenie bufora, nie jestem pewien co do Windowsa.

0

Kod powinien wyglądać tak:

#include <windows.h>
#include <stdio.h>

int main() {
	char z;
	scanf("%c", &z);

	if(z == '\n')
		printf("Wcisnieto Enter\n");
}

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