2016-09-12 3 views
-4

Wie kann ich ein Zeichen in der Mitte eines Strings einfügen? Gibt es eine eingebaute Funktion für diese Zum Beispiel habe ichWie fügt man ein Zeichen in die Mitte einer Zeichenkette in C ein?

char aa = "C:\\Users\\Ruby\\Desktop"; 

Ich will es

aa = "C:\\\\Users\\\\Ruby\\\\Desktop"; 

ändern? Wenn nein, wie kann ich das tun? Vielen Dank.

+7

Dies ist nicht gültig C. –

+0

Kompilieren Sie Ihren Code, um zu überprüfen, ob er gültig ist - aus mindestens zwei Gründen nicht. – chux

+0

@Alter Mann 'char a [64] =" C: \ Benutzer \ Ruby \ Desktop "; 'ist kein gültiger C-Code. (interessante Escape-Sequenzen), die zur Problematik von OP beitragen können. – chux

Antwort

1

Dies ist in c nicht möglich, da eine Zeichenfolge ein Teil des zugewiesenen Speichers ist, der Zeichen sequenziell enthält. Wenn Sie also einen String oder Char in einem bestimmten Index hinzufügen möchten, müssen Sie mehr Speicher zuweisen (falls Sie Speicher genau der Größe der Zeichenkette + Null-Endzeichen zugewiesen haben und alle Zeichen bei Indizes verschieben, die größer sind als das von uns hinzugefügte Zeichen/String.

Die einfachste Methode besteht darin, einen neuen Speicherbereich zuzuweisen, der groß genug ist, um die Zeichenfolge aufzunehmen, und Byte für Byte zu kopieren. Wenn Sie ein '/' erreichen, fügen Sie einfach ein zusätzliches '/' hinzu Zielzeichenfolge

Auch, wie einige erwähnt haben, ist dies nicht gültig c. Wenn Sie ein Zeichen deklarieren, weisen Sie grundsätzlich ein Speichersegment mit der Größe eines Bytes zu, das nicht ausreicht, um eine ganze Zeichenfolge zu enthalten (eine Zeichenfolge, die größer als ein Zeichen ist). Wenn es ein Array ist, können Sie nicht initialisieren Auf diese Weise wäre die richtige Vorgehensweise char *c = "C:/...";
Zuweisen eines größeren Speichersegments und Kopieren aus dem Zeichenzeiger.

+0

Danke, das hilft sehr –

Verwandte Themen