Wie setzen element im array auf null in C-Programm
Ich Schreibe ein C-Programm in Unix und kann nicht herausfinden, wie man eine array-Elements auf NULL. Ich muss in der Lage sein, dies zu tun, entfernen Sie mehrere Zeichen aus einem string.
Zeigen einige code. Was haben Sie bisher ausprobiert?
Meinst du, dass Sie möchten, verkürzen Sie die saite, indem man die NULL-Zeichen an einem bestimmten Ort? Geben Sie einfach '\0', um es.
Das null-byte ist eine Zeichenkette terminator - wenn Sie möchten, entfernen Sie die Zeichen, die Sie verschieben müssen, um die folgenden Zeichen nach Links, überschreiben nicht die "bösen" Charaktere mit null.
Auch höflich zu akzeptieren, die Antworten, sind Sie eher, um mehr Hilfe in der Zukunft.
Warum wird diese Frage hat eine Unix-tag auf?
Meinst du, dass Sie möchten, verkürzen Sie die saite, indem man die NULL-Zeichen an einem bestimmten Ort? Geben Sie einfach '\0', um es.
Das null-byte ist eine Zeichenkette terminator - wenn Sie möchten, entfernen Sie die Zeichen, die Sie verschieben müssen, um die folgenden Zeichen nach Links, überschreiben nicht die "bösen" Charaktere mit null.
Auch höflich zu akzeptieren, die Antworten, sind Sie eher, um mehr Hilfe in der Zukunft.
Warum wird diese Frage hat eine Unix-tag auf?
InformationsquelleAutor WyldStallyns | 2012-09-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht zuordnen
null
zu bestimmten char-array index als Wert vertreten, der index ist vom Datentyp char, statt der Zeiger. Aber wenn Sie benötigen, um zu entfernen bestimmter Zeichen aus der gegebenen Zeichenfolge, die Sie umsetzen können dies wie folgtTest-Programm
Ausgabe
Das hat wirklich, wirklich nichts zu tun mit der Frage.
Ich fürchte
char array[10];
würde nicht nur initialisiert werden, um eine Reihe von Nullen. In der Tat, wenn Sie nicht initialisieren eine variable, sondern nur erklären, wie du getan hast, Werte, die zuvor im Speicher abgelegt, würden in der Regel zugeordnet werden. Du bist einfach das reservieren von Speicher für die Variablen, aber nicht "reinigen", also was war es noch da ist, und es wird der aktuelle Wert für deine variable. Es ist in der Tat eine gute übung, nicht zur Initialisierung von Variablen wie diese:char string[size];
sondern wie diese:char string[size] = "";
.warum sind Sie nur reden über die Initialisierung ?
InformationsquelleAutor nKandel
Wenn Sie eine
char[]
können Sie null-out der einzelnen Elemente bei dieser:Beachten Sie, dass dies nicht das gleiche wie die Zuordnung
NULL
, daarr[1]
ist einchar
und nicht ein Zeiger ist, können Sie nicht zuordnenNULL
.Sagte, das wird wahrscheinlich nicht das tun, was Sie denken, es wird. Obiges Beispiel erzeugt den string
f
, nichtfo
wie Sie scheinen zu erwarten.Wenn Sie möchten, entfernen Sie die Zeichen aus einem string, Sie haben die Verlagerung der Inhalt der Zeichenfolge auf der linken Seite (einschließlich der null-terminator) mit
memmove
und einige Zeiger-Arithmetik:Beispiel:
Dann verwenden Sie es wie so:
InformationsquelleAutor netcoder
Wenn du redest über ein array von Zeigern (sagen
char **
), würde nur sagenarray[element] = NULL;
. Aber es klingt, als ob Sie wirklich wollen, um gerade abschneiden einer Zeichenfolge (char *
), in welchem Fall würden Sie wirklich schreiben wollenstring[index] = '\0'
, wo\0
ist das null-byte. Aber, soweit ich weiß,0
,'\0'
, undNULL
alle sind gleichwertig und gleich 0 ist (bitte korrigiert mich wenn ich falsch Liege). Natürlich, für die Klarheit, die Sie verwenden sollten0
für zahlen'\0'
für chars und strings, undNULL
für Zeiger.NULL
ist oft(void*)0
wäre, dass löst eine "Zuordnung macht Ganzzahl von Zeiger ohne cast" Warnung dann. Und auf den wenigen Plattformen, wo einNULL
Zeiger nicht alle bits 0 sind, kann es zu dem falschen Ergebnis.InformationsquelleAutor 1''