Mehrere Buchstaben in ein char einlesen
-
Hi,
ich habe nu schon länger im board gesucht und viel ausproberit und habe einfach keine Lösung gefunden.
Ich habe eine Eingabe die eine gewisse Größe nicht überschreiten soll (15 Zeichen). Jetzt möchte ich eine Eingabe einlesen die auch weniger als 15 Zeichen einlesen kann aber bei mehr als den 15 Zeichen einfach abbricht (ausgabe eines Fehlertextes, dass dann aber kein problem sein dürfte)
char cIniDatei[15]; printf ("Bitte geben sie den Dateinamen der zu ueberpruefnden Datei an\n"); scanf ("%s", &cIniDatei); //Hier sollte überprüft werden, dass die maximalen 15 Zeichen nicht überschritten werden
-
Schau dir mal die Funktion getch() aus der conio.h an. Damit kannst du Zeichen für Zeichen einlesen. Wie du dann weiter vorgehen musst, kannst du dir sicher denken, oder??
-
Hallo,
dafür braucht man keine (nicht standardisierte) conio.h,
weil Folgendesint result = 0; char cIniDatei[15+1]; /* +1 ist fuer die Null('\0')-Terminierung des "String" */ result = scanf("%15s", cIniDatei);
auch höchstens 15 Zeichen einliest. Aber eine Fehleranzeige beim Versuch, zuviel einzugeben, gibt es leider nicht(man: scanf(3), überzählige Zeichen werden ignoriert, Whitespace beendet den Lesevorgang).
Mit freundlichen Grüßen
ISO-C-Freund
-
Ich habe es so gelöst:
int iBuchstabenIndex = -1; do { iBuchstabenIndex++; cIniDatei[iBuchstabenIndex] = (char) (_getche() & 0xFF); //Hiermit werden die oberen 8 Bit gelöscht if (cIniDatei[iBuchstabenIndex] == 0) { _getch(); // Tastatur Puffer leeren iBuchstabenIndex = iBuchstabenIndex -1; //Taste soll überschrieben werden } if (cIniDatei[iBuchstabenIndex] == C_EINAGBE_BACKSPACE) //C_EINAGBE_BACKSPACE hat den Wert 2 { iBuchstabenIndex = iBuchstabenIndex - C_EINAGBE_FALSCH_LOESCHEN; //Taste soll überschrieben werden } } while ((cIniDatei[iBuchstabenIndex] != C_EINGABE_RETURN) && (iBuchstabenIndex < (C_LANEGEEINGABE - 1)));
Ich hoffe ihr könnt damit was anfangen. Wollte nur ma sagen wie ich es dann gemacht habe, um dabei noch Sonderzeichen auszuklammern...