strtok, richtige Benutzung?
-
Oooh jaa, sehr wichtig !
Der Stern ist der sogenannte Dereferenzierungsoperator. Mit dem kannst du dir den Inhalt angucken, auf den der Zeiger gerade zeigt.#include <stdio.h> int main () { char *source = "hello vista"; // source ist zeiger auf zeichenkette printf( "%c\n", *source ); // ausgabe h source++; // der zeiger zeigt ein byte weiter printf( "%c\n", *source ); // ausgabe e source++; // der zeiger zeigt ein byte weiter printf( "%c\n", *source ); // ausgabe l source++; // der zeiger zeigt ein byte weiter printf( "%c\n", *source ); // ausgabe l source++; // der zeiger zeigt ein byte weiter printf( "%c\n", *source ); // ausgabe o source++; // der zeiger zeigt ein byte weiter printf( "%c\n", *source ); // ausgabe l return 0; }
-
danke, gucke ich mir jetzt mal an
Offtopic:
ich brauche mal ganz schnell Hilfe bitte:
strcat(buffr, tmplength);
wobei tmplength vom typ int ist, sodass es eine Fehlermeldung (Access Violation) gibt. wie kann ich es richtig machen?strcat(buffr, (char *)tmplength);
scheint auch nicht zu funktionieren
-
jhk schrieb:
Wie geht das denn einfacher?
#include <stdio.h> void replace_light( char* str, char cOld, char cNew ) { while(*str) { if ( *str == cOld ) *str = cNew; str++; } } int main () { char str[] = "?Hallo?Echo?"; replace_light ( str, '?', '!' ); puts(str); return 0; }
-
nuub schrieb:
ich brauche mal ganz schnell Hilfe bitte
Immer ruhig mit den jungen Pferden, das ist keine Notdienstzentrale hier.
Siehe deklaration von strcat:
char *strcat( char *strDestination, const char *strSource );
Da kannst du nicht einfach einen int dranhängen. Benutz doch eifach weiter char*, so wie du es bisher gemacht hast.
-
ich muss die zahl, die in tmplength enthalten ist, an den string dranhängen...
-
int main () { char cHaengDichAn[256]= "Eins Eins Null-> "; int tmplength = 110; sprintf( cHaengDichAn, "%s%d", cHaengDichAn, tmplength ); puts(cHaengDichAn); return 0; }
-
Vielen Dank euch allen!
Noch einmal kurz zum Them zurück:
1. so sieht die Funktion aus:void GetPost(char *str, char *in , char *repl, char *out) { char *dummy1 = in; char *dummy2 = repl; while (*str) { if (*str == *in) { in++; if (*in == 0) { while (*repl) *out++ = *repl++; in = dummy1; repl = dummy2; } } else { in = dummy1; *out++ = *str; } str++; } *out = 0; }
2. Das möchte ich machen, wenn ich nur eines von beiden ausführe, klappt alles wunderbar, wenn ich beides machen möchte, passiert nichts weiter, und außerdem sind die '#' nach dem ersten mal ersetzen weg...
char *mesdummy = "hallo #name#, du bist #adjektiv#"; GetPost(mesdummy, "#name#", nam, mesdummy); GetPost(mesdummy, "#adjektiv#", adj, mesdummy);
-
nuub schrieb:
char *mesdummy = "hallo #name#, du bist #adjektiv#"; GetPost(mesdummy, "#name#", nam, mesdummy); GetPost(mesdummy, "#adjektiv#", adj, mesdummy);
du solltest als ziel nicht den quellstring verwenden,
a) er wird verändert, so das die funktion im weiteren verlauf mit falschem quellstring arbeitet.
b) er ist in einem read-only bereich und das programm stürzt möglicherweise ab.
-
Beim ersten funktioniert doch alles wunderbar...
beim zweiten passiert irgendwie nichts..
außerdem soll das in den gleichen
-
Du kannst konstante Zeichenketten nicht im Programmlauf verändern.
char* pConst = "Ich bin eine konstante Zeichenkette".
Char Arrays dagegen, kannst du verändern, diese:
char abc[] = "Mich kannst du aendern";
Und diese:
char def[1024] = "Mich kannst du auch aendern";