Tja mein erster Versuch sieht so aus:
Das Problem is nur, das der globale String groß genug sein muss, um das Ergebnis
zu speichern, da kein Boundary-Checking gemacht wird.
C
#include <stdio.h>
#include <iostream.h>
char globalerstring[100] = "Das ist ein Teststring";
void replace(const char* szOld, char* szNew)
{
char* szTemp = globalerstring;
char* szCopy = 0;
int iLen = 0, i = 0;
// Läne von globalen String erfassen
while (*szTemp++);
iLen = (szTemp - globalerstring - 1);
// Kopie machen
szTemp = globalerstring;
szCopy = new char[iLen+1];
do {
szCopy[i] = *szTemp;
i++;
} while(*szTemp++);
// Neuen String erstellen
int j=0, k=0;
for (int i=0; i < iLen; i++) {
j=0;
do {
if (szOld[j] == 0) {
i += j;
// Wort gefunden also ersetzen
char* atnew = szNew;
j=0;
do {
globalerstring[k++] = *atnew;
} while(*++atnew);
}
if (szCopy[i+j] != szOld[j])
break;
j++;
} while(true);
globalerstring[k++] = szCopy[i];
}
}
void main()
{
cout << globalerstring << "\n";
replace("ein","absolut kein");
cout << globalerstring << "\n";
}
Alles anzeigen