my_gets()
-
So, also ich will eine Funktion my_gets() schreiben. Ihr soll ein String und die maximale Länge des Strings übergeben werden.
Unterprogramm:
void my_gets(char *string, int len) { int i = 0; // Schleifenzähler char ch; // das Zeichen, das gerade gelesen wird ch = getchar(); while (ch != '\n' && i < (len-1)) { *string = ch; string++; ch = getchar(); i++; } *string = '\0'; // String abschließen }
Jetzt hab' ich aber das Problem, dass das mit der 2.Bedingung i < (len-1) nicht klappt. Kann mir da jemand helfen? Ich find' nämlich schon, das so eine Funktion sinnvoll wäre. Z.b. das ich dann auch noch eine Meldung oder so ausgebe. Schonmal danke.
Thomas
-
wie wärs damit (ungetestet)
void my_gets(char *string, int len) { char c; // das Zeichen, das gerade gelesen wird for(++len;--len && (c=getchar())!='\n';*string++=c); *string = '\0'; }
je nachdem ob len inklusive oder exklusive nullbyte sein soll ++len weglassen...
-
Danke für die Antwort, aber soweit ich seh' funktioniert es nicht...
Thomas
-
nimm fgets() mit stdin als file handle.
-
nimm fgets() mit stdin als file handle.
hehe das wäre in etwa das gleiche wenn man mystrlen implementiert indem man strlen aufruft...
Danke für die Antwort, aber soweit ich seh' funktioniert es nicht...
was geht denn nicht?
habs eben mal angetest... wenn ich 012345789 eingebgen hat, hat er mir das auch wieder ausgegeben...
-
[quote="Windalf"]
nimm fgets() mit stdin als file handle.
hehe das wäre in etwa das gleiche wenn man mystrlen implementiert indem man strlen aufruft...
Ja, du hast recht. Aber für den Anfang reichts mir. Die Idee ist wirklich klasse. Und mit fflush(stdin) leere ich noch den Puffer ;-).
Danke für die Antwort, aber soweit ich seh' funktioniert es nicht...
was geht denn nicht?
habs eben mal angetest... wenn ich 012345789 eingebgen hat, hat er mir das auch wieder ausgegeben...
Kann sein. Aber auf jeden Fall, bricht das Programm nicht ab, wie es laut der Schleife ja soll. Ich verwende jetzt erstmal fgets.
Danke!!!
Thomas
-
wie wärs mit nem getc() loop?
http://www.cppreference.com/stdio/getc.html
-
c.rackwitz schrieb:
wie wärs mit nem getc() loop?
http://www.cppreference.com/stdio/getc.htmlSicher auch eine Möglichkeit. Danke sehr
für die Hilfe.
Thomas
-
keine ahnung, wo dein problem liegt. ich hab deine funktion mal kompiliert und bei mir funktioniert sie einwandfrei!