Sprawdziem pobieranie zarówno przez funkcję gets("%c", ..) jak i getchar() i obie niestety nie radzą sobie ze znakiem końca lini, w zalezności od terminala trzeba czyścić bufor, albo ponownie wywołać getchar().
Proponuje więc najprosztszą funckcję gets, która nie jest idealna, ale w tym przypoadku chyba najłatwiej da nam oczywkiwany wynik. Musiałem w związku z tym zwiększyć byfor wcz o 1 znak aby dało się dopisać tam znak 0.
Kod: Zaznacz cały
#include <stdio.h>
int main(){
char tw[9][2] = {
{'a', '1'}, {'a', '2'}, {'a', '3'},
{'b', '1'}, {'b', '2'}, {'b', '3'},
{'c', '1'}, {'c', '2'}, {'c', '3'}};
int i = 0;
char wcz[] = "00";
while(wcz[0] != 'q') {
printf("\nPodaj litere (q - koniec) "); gets(&wcz[0]);
if (wcz[0] != 'q') {
printf("\nPodaj cyfre "); gets(&wcz[1]);
printf("\nWybrano %c %c\n", wcz[0], wcz[1]);
while (i < 9) {
if (wcz[0]==tw[i][0] && wcz[1]==tw[i][1]) {
printf("Jest to pozycja nr %d\n", i + 1);
}
i++;
}
i = 0;
}
}
return 0;
}
Właściwie to można by bardzioej elegancko podać od razu oba elementy tzn zamiast
printf("\nPodaj litere (q - koniec) "); gets(&wcz[0]);
printf("\nPodaj cyfre "); gets(&wcz[1]);
dać od razu
printf("\nPodaj jedna litere i jedna cyfre (q - koniec) "); gets(wcz);
i od razu mamy w zmiennej wczs to o co nam chodzi.
Podajemy np b1.
Ostatecznie kod wyglądał by tak
Kod: Zaznacz cały
#include <stdio.h>
int main(){
char tw[9][2] = {
{'a', '1'}, {'a', '2'}, {'a', '3'},
{'b', '1'}, {'b', '2'}, {'b', '3'},
{'c', '1'}, {'c', '2'}, {'c', '3'}};
int i = 0;
char wcz[] = "00";
while(wcz[0] != 'q') {
printf("\nPodaj jedna litere i jedna cyfre (q - koniec) "); gets(wcz);
if (wcz[0] != 'q') {
printf("\nWybrano %s\n", wcz);
while (i < 9) {
if (wcz[0]==tw[i][0] && wcz[1]==tw[i][1]) {
printf("Jest to pozycja nr %d\n", i + 1);
}
i++;
}
i = 0;
}
}
return 0;
}