Hoe vertegenwoordigt men de lege char?

Ik schrijf momenteel een klein programma, maar ik krijg deze foutmelding bij het compileren

FOUT: lege tekenconstante

Ik realiseer me dat het is omdat ik probeer een geldig char met lege ruimte te vervangen c[i]=''maar ik heb geen andere manier kunnen vinden om het te vertegenwoordigen.


1, Autoriteit 100%

U kunt c[i]= '\0'of eenvoudig gebruiken c[i] = (char) 0.

De null / lege char is gewoon een waarde van nul, maar kan ook worden weergegeven als een personage met een ontsnapte nul.


2, Autoriteit 20%

U kunt “geen teken” in een personage niet opslaan – het klopt niet.

Als alternatief kun je een personage opslaan met een speciale betekenis voor jou – b.v. Null char '\0'– en behandel dit speciaal.


3, Autoriteit 8%

De lege spatie-char zou ' 'zijn. Als u op zoek bent naar null die '\0'zou zijn.


Antwoord 4, autoriteit 3%

Er bestaat niet zoiets als het “lege teken” ''.

Als je een spatie nodig hebt, kan dat worden weergegeven als een spatie: c[i] = ' 'of als zijn ASCII octale equivalent: c[i] = '\040'. Als je een NUL-teken nodig hebt, is dat c[i] = '\0'.


Antwoord 5, autoriteit 3%

Om aan te geven dat de waarde niet aanwezig is, heeft u twee keuzes:

1) Als het hele char-bereik zinvol is en u geen waarde kunt reserveren, gebruik dan char*in plaats van 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

Dan heb je c[i] == NULLvoor wanneer het teken niet aanwezig is en anders *c[i]voor gewone tekens.

2) Als je sommige waarden niet nodig hebt die in charkunnen worden weergegeven, reserveer er dan een om aan te geven dat die waarde niet aanwezig is, bijvoorbeeld het teken '\0'.

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

Dan heb je c[i] == '\0'voor als teken niet aanwezig is en anders gewone tekens.


Antwoord 6, autoriteit 3%

Er zijn twee manieren om dezelfde instructie uit te voeren, namelijk een lege string. De eerste manier is om een lege string toe te wijzen aan statisch geheugen:

char* my_variable = "";

of, als je expliciet wilt zijn:

char my_variable = '\0';

De hierboven geposte manier is alleen voor een personage.
En de tweede manier:

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

Vergeet niet om free()bij deze te gebruiken, want strdup()gebruikt mallocbinnen.


Antwoord 7

Het kan handig zijn om een null in een string toe te wijzen in plaats van expliciet een index de null char '\0'te maken. Ik heb dit gebruikt voor het testen van functies die strings afhandelen en ervoor zorgen dat ze binnen de juiste grenzen blijven.

Met:

char test_src[] = "fuu\0foo";

Dit creëert een array van grootte 8 met waarden:

{'f', 'u', 'u', '\0', 'f', 'o', 'o', '\0'}

Antwoord 8

String before = EMPTY_SPACE+TAB+"word"+TAB+EMPTY_SPACE;

Waar lege_space = “” (dit is string) tab = ‘\ t’ (dit is teken)

String after = before.replaceAll(" ", "").replace('\t', '\0');

betekent na = “woord”


9

Dit is een geval van enkele aanhalingstekens en dubbele aanhalingstekens met verschillende betekenissen.

""wordt vertaald naar (const char[1])""door de compiler. Hiermee kunt u het gebruiken in initialisaties van karakterarrays.

' 'is niet, en zou een niet-beheerde lege tekenreeks zijn. Omdat u niet kunt zien of een string leeg is zonder het te beëindigen, is dit geen geldige code. Vandaar de fout.

Je wilde bijna zeker doen

c[i] = '\0';

Indien cwas inderdaad een tekststring, dit stelt de lengte van de reeks in op I door het op dat teken te beëindigen.

Indien cwas niet bedoeld als een tekststring, die nog steeds de waarde is die u moet gebruiken om te betekenen dat er niets is, omdat het onjuist is ander karakter is waar.

Als je er eigenlijk een spatie bedoelde, wilde je

c[i] = ' ';

Other episodes