switch und case
-
ich habe ein programm das wenn man die tasten 1 bis 4 drückt die 4 leds an der parallelen schnittstelle aufleuchten. ich habe das mit switch/case gelöst!jetzt habe ich ein problem mit der fehlermeldung (default:).
also es ist so:
wenn ich die Taste 1 drücke sollte das printf( "Taste 1 aktiviert" ); so sein:1 Taste '1' aktiviert Taste nicht belegt
das "Taste nicht belegt" ist das default im switch.
und ich möchte aber das das "Taste nicht belegt" weg ist und nur dann kommt wenn ich eine andere taste drücke!!!
ich habe es mit einer schleife (while) schon probiert aber da ist es das selbe!hier der ganze code:
#include <stdio.h> #include <string.h> #include <sys/io.h> #define D_LPT1_DATA 0x378 int main( int argc, char *argv[], int a ) { int I_port; char *pC_port; I_port = D_LPT1_DATA; if ( ioperm( I_port, 3, 1) != 0 ) { /* get IO/perm */ perror( "ERROR: can_t open LPT device for read/write" ); return(-1); } printf( "\nProgramm wurde gestartet. Mit STRG+C wird das Programm beendet\n\nTatse 1 = LED1\nTaste 2 = LED2\nTaste 3 = LED3\nTaste 4 = LED4\n\n", pC_port ); while( 1 ) { switch( a = getchar() ) { case '1': printf( "Taste '1' aktiviert\n" ); outb( 0x1, I_port ); break; case '2': printf( "Taste '2' aktiviert\n" ); outb( 0x2, I_port ); break; case '3': printf( "Taste '3' aktiviert\n" ); outb( 0x4, I_port); break; case '4': printf( "Taste '4' aktiviert\n" ); outb( 0x8, I_port); break; case 'r': case 'R': outb( 0x00, I_port ); printf( "LPT-Port wurde zurückgesetzt\n" ); break; default: printf( "Taste nicht belegt\n" ); } } }
mfg linux-tux
-
Das wird vom Enter kommen.
-
was kann man dagegen tun???
mfg linux-tux
-
Die Fehlermeldung nur dann ausgeben, wenn c != '\n' ist.
Also zB. eine Zeile case '\n': break; hinzufügen.
-
thx!
jetzt versteh ich auch warum das so ist!!!!
mfg linux-tux
-
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Linux/Unix in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.