Probleme mit char einlesen
-
Hallo an alle,
ich habe ein Problem bezüglich des einlesen eines Strings.
Ich deklariere ein char feld mit z.B. 35 zeichen, danach lese ich ein und fülle den rest mit - oder ähnlichem auf aber das funktioniert nicht. Habe schon folgenden code geschrieben:
#include <stdio.h> #include <string.h> int main(void) { char ein_tmp[35]; int laenge=0; do{ printf("\nEingabe:\t"); gets(ein_tmp); laenge=strlen(ein_tmp); for(int i=laenge;i<35;i++) { ein_tmp[i]='-'; } printf("Ausgabe:"); puts(ein_tmp); } while(*ein_tmp!='ende'); fflush(stdin); getchar(); }
Wenn ich nun hallo eingeben erscheint folgendes auf der konsole:
http://www.abload.de/img/konsole_do_while_einle7ys6.jpgAusserdem funktioniert der Ausdruck für das beenden der schleife nich aber weiß nicht wieso:
while(*ein_tmp!='ende');
-
Du hast ein paar Fehler gemacht. So klappts:
#include <stdio.h> #include <string.h> int main() { char ein_tmp[35]; int laenge=0; do{ printf("Eingabe:\t"); scanf("%s", ein_tmp); laenge=(int)strlen(ein_tmp); for(int i=laenge; i<35; i++) { ein_tmp[i] = '-'; } ein_tmp[34] = '\0'; // String terminieren printf("Ausgabe:\t%s\n", ein_tmp); } while(strncmp(ein_tmp, "ende", 4) != 0); // Erste vier Zeichen auf "ende" überprüfen }
-
Und aus gegebenem Anlass poste ich das One True File Flush Macro:
void what_you_expect_from_fflush(FILE *fp) { int c; if (fp == stdin) while ((c = getchar()) != EOF && c != '\n') ; else fflush(fp); } #define fflush(arg) (what_you_expect_from_fflush(arg))
-
Danke an JustSomeCoder, hat wunderbar geklappt. Aber das von bgdnoy habe ich leider nicht verstanden.
-
Danke an JustSomeCoder, hat wunderbar geklappt. Aber das von bgdnoy habe ich leider nicht verstanden.
Ist nur ein Scherz. Läuft aber trotzdem.
Kopier's in einen Header und du kannst ganz frei sagen:fflush(stdin);
Siehe auch die FAQ:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39349.html