string kürzen
-
Hallo!
Kann ich in C einen String (char[Feld]) so umformen, dass ich im Grunde alle Zeichen ab einer bestimmten Länge abschneide?
scanf("%16s", Eintrag[i].Name);
Der Eintrag[i].Name darf nicht mehr als 16 Zeichen umfassen.
mfg, Jakob
-
könntest n ausreichend grosses array nehmen und erstma dahin schreiben. dann prüfen, ob 15 zeichen + '\n' überschritten wurden. wenn nicht dann strcpy().
-
Wenn es dir um die Engabe geht, dann empfehle ich fgets().
Wenn du einen längeren String im nachhinein auf n Zeichen kürzen willst, muss du lediglich das n+1 Element mit einer '\0' belegen.
-
Danke für die Antworten, hab aber noch ne Frage:
Wie kann ich Scanf-stoppen?
Ein Beispiel:#include <stdio.h> main() { char Name[5], Vorname[5]; scanf("%5s", Name); scanf("%5s", Vorname); printf("\n %s \n %s", Name, Vorname); }
Wenn ich 6 Zeichen als Namen eingebe, überspringt er de Frage nach dem Vornamen und bringt dort das "überschüssige" Zeichen aus dem scanf des Namens.
Wie löse ich das Problem ? mfg, Jakob
-
abschneiden? an der entsprechenden stelle ein '\0' setzen.
-
b0kaJ schrieb:
Wenn ich 6 Zeichen als Namen eingebe, überspringt er de Frage nach dem Vornamen und bringt dort das "überschüssige" Zeichen aus dem scanf des Namens.
Wie löse ich das Problem ?
Du mußt vor der nächsten Eingabe den Puffer leeren (bis zum nächsten '\n'), sonst bleiben Überreste der ersten Eingabe zurück.
-
Bingo! Genau! Den Puffer leeren - das konnt ich nur nich so präzise auf den Punkt bringen. Bleibt die Frage. WIE leere ich den Puffer?
mfg, Jakob
-
ohne Garantie verweise ich mal auf die Konsolen-FAQ: http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html
-
k, i got it
fflush(stdin);
thx an alle!
-
mach das nicht.
-
ähh .. warum?
-
boardsuche "flush stdin boese"