Wie stellt man das leere Zeichen dar?

Lesezeit: 5 Minuten

Ich schreibe gerade ein kleines Programm, aber ich bekomme immer diesen Fehler beim Kompilieren

Fehler: leere Zeichenkonstante

Mir ist klar, dass es daran liegt, dass ich versuche, ein gültiges Zeichen durch Leerzeichen zu ersetzen c[i]='' aber ich bin nicht im Stande gewesen, einen anderen Weg zu finden, es darzustellen.

  • Es gibt kein “leeres Leerzeichen” (falsche Terminologie), obwohl es eine leere Zeichenkette geben kann. Willst du ersetzen c[i] mit einer Leerstelleoder möchten Sie dieses Zeichen aus dem Array “eliminieren”, wie Sie es in einem Editor tun würden, wenn Sie die Rücktaste drücken (dh möchten Sie, dass die Zeichen c[i-1] und C[i+1] nach der Operation angrenzend werden)?

    – Lorenzo Donati unterstützt die Ukraine

    23. August 2013 um 19:26 Uhr

  • Wenn Sie Zeichenfolgen verstehen, können Sie sie zum Zeitpunkt der Deklaration als zuweisen char c[5] = ""; leere Zeichenfolge aber char c = ''; ist nicht gültig, wie unten in 6 Antworten erklärt.

    – Grijesh Chauhan

    23. August 2013 um 19:34 Uhr

Benutzeravatar von ardent
leidenschaftlich

Sie können verwenden c[i]= '\0' oder einfach c[i] = (char) 0.

Das null/leere Zeichen ist einfach ein Wert von Null, kann aber auch als Zeichen mit einer Escape-Null dargestellt werden.

  • Ja, und es gibt kein “leeres Zeichen”. '\0' ist der Nullzeichen was nichts damit zu tun hat NULL; Das Nullzeichen ist einfach ein Zeichen mit 0 als numerischem Code.

    – Lorenzo Donati unterstützt die Ukraine

    23. August 2013 um 19:30 Uhr


  • @LorenzoDonati Ja, ich habe mich entschieden, es zu entfernen, da es dieser Antwort nichts hinzufügt und für die vorliegende Diskussion aus dem Kontext gerissen zu sein scheint.

    – leidenschaftlich

    23. August 2013 um 19:40 Uhr

  • @GrijeshChauhan wird als Nullzeichen oder Null-Endzeichen bezeichnet, wird jedoch als abgekürzt nul. Sehen tools.ietf.org/html/rfc20#section-5.2. Es wird auch im ANSI-C-Standard als Nullzeichen bezeichnet.

    – leidenschaftlich

    23. August 2013 um 20:17 Uhr


  • @GrijeshChauhan und Ardentsonata Für eine genauere Bezugnahme definiert der C99-Standardentwurf (N1256) diesen Begriff in Abschnitt 5.2.1 (Zeichensätze), Absatz 2: “[…]Ein Byte, bei dem alle Bits auf 0 gesetzt sind, genannt Nullzeichen, muss im grundlegenden Ausführungszeichensatz vorhanden sein; es wird verwendet, um eine Zeichenfolge abzuschließen.” Die C/C++-Terminologie ist immer ein bisschen albtraumhaft 😉

    – Lorenzo Donati unterstützt die Ukraine

    23. August 2013 um 21:07 Uhr

  • Es gibt kein leeres Zeichen. Das Nullzeichen als leeres Zeichen zu bezeichnen, ist einfach falsch.

    – Christoffer Hammarström

    25. Juni 2015 um 10:01 Uhr

Sie können “kein Zeichen” nicht in einem Zeichen speichern – es macht keinen Sinn.

Alternativ können Sie auch ein Zeichen hinterlegen, das für Sie eine besondere Bedeutung hat – zB null char '\0' – und diese besonders behandeln.

  • Ich denke, das ist eine viel bessere Antwort als die akzeptierte, die null char und empty char verwechselt. Als Analogie ist es so, als würde man sagen, dass man kein int deklarieren und „keine Zahl“ speichern kann – man muss speichern etwas Wert.

    – Simonwo

    13. Mai 2015 um 9:42 Uhr

  • Sie können eine Nullzeichenfolge haben "" weil eine Zeichenfolge eine Folge von null oder mehr Zeichen ist, aber ein Zeichen genau ein Wert ist – nicht null und nicht mehr.

    – Simonwo

    13. Mai 2015 um 9:42 Uhr

Das Leerzeichen wäre ' '. Wenn Sie nach null suchen, wäre das '\0'.

Benutzeravatar von Grijesh Chauhan
Grijesh Chauhan

Ja, c[i]='' ist kein gültiger Code. Wir klammern Zeichen konstant zwischen ' 'z.B c[i] = 'A'; verkohlen A. aber du schreibst kein char dazwischen ''.

Leerer Speicherplatz ist nichts anderes als angenommen, wenn Sie Speicherplatz zuweisen möchten, tun Sie Folgendes:

c[i] = ' ';
//      ^  space 

wenn zugeteilt werden will nul char dann mach:

c[i] = '\0';
//       ^ null symbol 

Beispiel: Angenommen, wenn c[] eine Zeichenfolge (null \0 beendetes Char-Array), wenn Sie eine Zeichenfolge haben. zum Beispiel:

char c[10] = {'a', '2', 'c', '\0'};

Und du Ersetzen Sie das zweite Zeichen durch ein Leerzeichen:

c[1] = ' ';

und wenn Sie es mit printf wie folgt drucken:

printf("\n c: %s", c);

dann wäre die Ausgabe:

  c:  a  c
//      ^ space printed 

Und du zweites Zeichen durch ‘\0’ ersetzen:

c[1] = '\0';

dann wäre die Ausgabe:

  c:  a

weil string mit endete \0.

Es gibt kein “leeres Zeichen” ''.

Wenn Sie ein Leerzeichen benötigen, kann dies als Leerzeichen dargestellt werden: c[i] = ' ' oder als ASCII-Oktaläquivalent: c[i] = '\040'. Wenn Sie ein NUL-Zeichen benötigen, ist das c[i] = '\0'.

Um darzustellen, dass der Wert nicht vorhanden ist, haben Sie zwei Möglichkeiten:

1) Wenn das Ganze char Bereich sinnvoll ist und Sie keinen Wert reservieren können, dann verwenden char* Anstatt von char:

char** c = new char*[N];
c[0] = NULL; // no character
*c[1] = ' '; // ordinary character
*c[2] = 'a'; // ordinary character
*c[3] = '\0' // zero-code character

Dann haben Sie c[i] == NULL für wenn Charakter nicht vorhanden ist und sonst *c[i] für gewöhnliche Charaktere.

2) Wenn Sie einige darstellbare Werte nicht benötigen char Reservieren Sie dann einen, um anzuzeigen, dass kein Wert vorhanden ist, z. B. der '\0' Charakter.

char* c = new char[N];
c[0] = '\0'; // no character
c[1] = ' '; // ordinary character
c[2] = 'a'; // ordinary character

Dann haben Sie c[i] == '\0' für wenn kein Zeichen vorhanden ist und ansonsten gewöhnliche Zeichen.

Benutzeravatar von Nick Cuevas
Nick Cuevas

Es gibt zwei Möglichkeiten, dieselbe Anweisung auszuführen, dh eine leere Zeichenfolge. Die erste Möglichkeit besteht darin, einen leeren String im statischen Speicher zuzuweisen:

char* my_variable = "";

oder, wenn es explizit sein soll:

char my_variable="\0";

Der oben gepostete Weg ist nur für einen Charakter. Und der zweite Weg:

#include <string.h>
char* my_variable = strdup("");

Verwendung nicht vergessen frei() mit diesem weil strdup() verwenden malloc Innerhalb.

1421810cookie-checkWie stellt man das leere Zeichen dar?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy