Entfernen Sie Zeichen aus einer Zeichenfolge in C

Ich habe nur Zugriff auf 'C' und muss Zeichen innerhalb eines Zeichenarrays ersetzen. Ich habe keine sauberen Lösungen für dieses relativ einfache Verfahren gefunden.

Mir wurde ein Zeichenarray übergeben, zum Beispiel:

char strBuffer[] = "/html/scorm12/course/course_index.jsp?user_id=100000232&course_id=100000879&course_prefix=ACQ&version=2&scorm_version=3&roster_id=100011365&course_name=Test%20Course%201.2&mode=browse&course_number=0000&mode_id=1";

Ich muss diesen Puffer ändern, um alle zu ersetzen& mit&. Der resultierende Puffer muss strBuffer nicht überschreiben (ein neuer Puffer kann erstellt werden).

Irgendwelche Vorschläge?

Bearbeiten:

In der Vergangenheit habe ich die strstr-Funktion in einer Schleife ausgeführt, aber nach einer einfacheren Lösung gesucht, vielleicht dem C-Äquivalent zur String.Replace-Methode.

Bearbeiten:

Für meine unmittelbaren Bedürfnisse ist das Folgende alles, was ich brauche.

char strBuffer[] = "/html/scorm12/course/course_index.jsp?user_id=100000232&course_id=100000879&course_prefix=ACQ&version=2&scorm_version=3&roster_id=100011365&course_name=Test%20Course%201.2&mode=browse&course_number=0000&mode_id=1";
char strTemp[1024];
char *s = (char*)strBuffer;
int i=0;

while (*s)
{
    strTemp[i++] = *s;
    if (strncmp(s,"&",5) == 0)
    {
        s += 5;
    }
    else
        s++;
}
strTemp[i] = 0;

Zukünftige Änderungen:

Erstellen Sie eine Dienstprogrammfunktion, um diese Funktion zu speichern.Übergeben Sie die Suchzeichenfolge als Parameter.Bestimmen Sie die Länge der Suchzeichenfolge, damit die fest codierten 5er entfernt werden können.Ordnen Sie die Variable strTemp dynamisch zu.Fehler beim Überprüfen auf leere Zeichenfolgen und Zeichen, die nicht gefunden wurden.

BEARBEITEN:

Ich habe einen Blog-Post erstellt, um die einzelnen Schritte zu beschreiben und eine flexiblere Lösung bereitzustellen:

http://www.solutionmaniacs.com/blog/2012/11/25/c-removereplace-characters-in-a-string.html

Antworten auf die Frage(4)

Ihre Antwort auf die Frage