Ich soll eine Hausaufgabenfrage für eine meiner Klassen beantworten. Insbesondere soll ich sagen, ob bestimmte Arrays in C als Strings betrachtet werden oder nicht. Basierend auf diesem Artikel ( https://www.geeksforgeeks.org/strings-in-c-2/ ) weiß ich, dass Zeichenfolgen ein Array von Zeichen mit dem Nullterminator am Ende sind.
Mein Hauptproblem ist ein Teil der Frage, die nach einem Array fragt, das so aussieht:
char c1[] = { 'C', 'S', '\0', '3', '2', '4', '\0' };
Dies ist offensichtlich ein Array von Zeichen mit einem Null-Abschlusszeichen am Ende. Wird es jedoch immer noch als Zeichenfolge betrachtet, da es in der Mitte auch ein Null-Abschlusszeichen hat? Wie wirkt sich das auf die Zeichenfolge aus?
EDIT: Aufgrund von Kommentaren habe ich den tatsächlichen Wortlaut der Frage angegeben:
"Welche der folgenden Arrays können als" Zeichenfolgen "betrachtet werden, um sie als Argumente für strcpy (), strncpy (), strcmp (), strncmp () und ähnliche Zeichenfolgenfunktionen zu verwenden (geben Sie alle zutreffenden an)?"
EDIT: Ich habe meinem Professor eine E-Mail darüber geschickt, da die Frage nicht eindeutig formuliert zu sein schien (wie mehrere Leute betonten). Wenn jemand neugierig ist, sagte er zu mir: "Ja, es ist eine Zeichenfolge. Der Schlüssel ist, dass es ein Nullzeichen gibt. Aber das wirkt sich natürlich auf alle Zeichenfolgenoperationen aus. Die Zeichenfolge endet mit dem Nullzeichen."
strcmp()
. Ob es als Argument für die Mutation von Zeichenfolgenfunktionen verwendet werden kann, hängt von zusätzlichen Faktoren ab, die nicht angegeben werden.
c1
ist veränderlich, daher verstehe ich nicht, warum es kein gültiges Zielargument für strcpy
oder ähnliches sein würde, es sei denn, es war nicht groß genug, um die Quellzeichenfolge aufzunehmen. Das würde es nicht zu einer Saite machen, nur nicht zu einer für einen bestimmten Zweck geeigneten.
c1
würde die grundlegenden Anforderungen für Zeichenfolgenargumente für alle (engen) Zeichenfolgenfunktionen der Standardbibliothek erfüllen, einschließlich aller speziell genannten, aber das Verhalten entspricht möglicherweise nicht den Erwartungen oder Wünschen des Aufrufers (selbst wenn undefinierte Verhaltensweisen ignoriert werden, die hervorgerufen werden könnten).
char
. Jeder Zeichentyp reicht aus .
"CS"
einige Bytes Müll angehängt sind (in diesem Fall ist das letzte NUL-Zeichen irrelevant). Aber es ist keine Zeichenfolge "als Ganzes". - Wenn Sie dies jedochstrcpy
usw. zuführen, wird Ihr PC nicht explodieren, da diese Funktionen nur den"CS"
Teil "sehen" .