Bin mir nicht ganz sicher aber ich glaub wenn du sie als "static" machst müsste sich das erledigt haben.
Bin mir nicht ganz sicher aber ich glaub wenn du sie als "static" machst müsste sich das erledigt haben.
Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]
Nein, ich habe es mittlerweile durch rumprobieren herausgefunden. So funktioniert es:
Viele GrüßeCode:if (MaxChars > 0) { *Buffer = CheckBuffer; return (TRUE);
Andreas
Wieso so kompliziert?
Geht doch auch etwas einfacher:
Code:char *func(char *buffer, char ch, size_t size) { int i = 0; for(i = 0; i < size; i++) { if(*buffer == ch) { return buffer; break; } buffer++; } return NULL; }mfgCode:char buf[] = "Hallo"; char *c = 0; c = func(buf, 'a', sizeof(buf)); if(c == 0) printf("Fehler"); else printf("%c", *c);
Stimmt, so gehts auch (nicht getestet, aber es fehlt zumindest ein & im Funktionsaufruf). Bei dieser Lösung ist die Fuktion zwar kürzer, aber dafür die Auswertung um eine Zeile länger. Quasi Geschmackssache.
Ich habe die Funktion so implementiert, damit die Auswertung übersichtlicher ist und bleibe somit bei meiner Lösung.
Viele Grüße
Andreas
Nein, das & fehlt nicht, das gehört da nicht hin.
Es geht aber noch einfacher:
Diese Version hat den Vorteil, daß sie nicht durch "rumprobieren" entstanden ist, sondern der Programmierer wußte, was er tat. Zusätzlich ist sie millionenfach getestet worden und hat eine sehr schöne Doku, die man leicht in einem C-Buch oder im Internet nachlesen kann. Und wenn man schon etwas eigenes schreibt, daß eine Funktion der libc nachbildet, sollte man Übergabeparameter und Returnwerte wie die Libraryfunktion verwenden. Das macht anderen und einem selbst nach einigen Monaten das Leben und das Verstehen leichter.Code:#include <string.h> char buf[] = "Hallo"; char *c = 0; c = strchr(buf, 'a'); if(!c) printf("Fehler"); else printf("%c", *c);
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Hallo Klebwax,
ich habe mir die Beschreibung der Funktion nicht genau angesehen, aber mein String ist nicht Null-Terminiert und kann es aus technischen Gründen ohne vorher umkopiert zu werden auch nicht werden. Deshalb bin ich überhaupt auf die Idee gekommen eine eigene Funktion dafür zu schreiben, und deshalb auch der Parameter MaxChars.
Viele Grüße
Andreas
Lesezeichen