Hallo,
Ich möchte mit C/C++ (WinApi) ein Programm schreiben, was jeden Buchstaben durch einen anderen ersetzt.
okay, hört sich einfach an.
Das mit der Darstellung bekomme ich hin. Aber an der "Ersetzen-Funktion" scheitert es.
Oh, ich hätte eher vermutet, dass man an den anspruchsvolleren Dingen scheitert, nicht an den Basics. Also was haben wir:
* Die Länge eines Strings erhält man in C nur umständlich, aber wenn man
Schritt für Schritt durchgeht, findet man das Ende leicht: Ein Nullbyte
* Ein String wird durch einen Zeiger auf Zeichen oder durch ein Array von
Zeichen dargestellt; in beiden Fällen kann man mit dem Index-Operator []
auf die einzelnen Zeichen zugreifen, im Falle des Zeigers außerdem auf
das erste Zeichen mit dem Dereferenzierungs-Operator *
* Nun musst du nur noch wissen, *was* du an der Stelle jedes Zeichens neu
zuweisen möchtest
Beispiel:
int ModifyString(char *string)
{ int i;
while (string[i]!=0) // ein Nullbyte markiert in C das String-Ende
{ string[i] = AnotherChar; // hier Ersatzwert eintragen
i++; // Index erhöhen
} // und weiter
return (0); // ein Dummy-Rückgabewert der Form halber
}
Der Rückgabewert hat hier nicht wirklich viel Sinn, ich lege meine Funktionen aber gern so an, dass sie einen Fehlercode zurückgeben - normalerweise gilt 0 dann als "alles okay".
Wenn man das jetzt noch ein wenig kürzen möchte, kann man auf die Schleifenvariable auch verzichten und stattdessen direkt den Zeiger weiterrücken; die Increment-Operation kann man in die Zuweisung hineinpacken und schließlich den expliziten Vergleich mit 0 eliminieren:
int ModifyString(char *string)
{ while (*string)
*string++ = AnotherChar;
return (0);
}
Für mich ist diese kompakte, komprimierte Schreibweise klarer, aber da sind manche Leute anscheinend anderer Meinung. ;-)
So long,
Martin
Okay, Alkohol ist keine Antwort.
Aber manchmal vergisst man beim Trinken wenigstens die Frage.