Char-Array in C drucken
-
Verwenden Sie die
for
-Schleife, um ein Char-Array in C zu drucken -
Verwendung von
printf
mit dem Spezifizierer%s
zum Drucken eines Zeichenarrays in C
Dieser Artikel stellt mehrere Methoden vor, wie man ein Char-Array in C drucken kann.
Verwenden Sie die for
-Schleife, um ein Char-Array in C zu drucken
Die for
-Schleife ist die naheliegendste Lösung, wenn wir Array-Elemente einzeln ausgeben und die Ausgabe mit mehr Details formatieren wollen. Eine kritische Voraussetzung für diese Methode ist, dass wir die Array-Länge im Voraus kennen sollten.
Beachten Sie, dass wir auch andere Iterationsmethoden wie die while
-Schleife verwenden können, aber dann sollten wir den Wert kennen, bei dem die Iteration aufhören soll; andernfalls würde die Iteration aus dem Rahmen fallen und den Segmentierungsfehler auslösen.
Im folgenden Beispiel demonstrieren wir die for
-Schleifenmethode und iterieren genau 6 Mal über das Array mit sechs Zeichen.
#include <stdio.h>
#include <stdlib.h>
#define STR(num) #num
int main(void) {
char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};
printf(STR(arr1) ": ");
for (int i = 0; i < 6; ++i) {
printf("%c, ", arr1[i]);
}
printf("\b\b\n");
exit(EXIT_SUCCESS);
}
Ausgabe:
arr1: a, b, c, d, e, f
Verwendung von printf
mit dem Spezifizierer %s
zum Drucken eines Zeichenarrays in C
Die Funktion printf
ist eine mächtige Funktion zur formatierten Ausgabe. Sie kann Eingabevariablen mit Typspezifizierern manipulieren und Variablen entsprechend verarbeiten.
Das char
-Array hat nämlich intern die gleiche Struktur wie die Zeichenkette im C-Stil, nur dass die Zeichen der Zeichenkette im C-Stil immer mit dem Byte \0
enden, um den Endpunkt zu kennzeichnen. Wenn wir das Null-Byte an das Ende unseres char
-Arrays anhängen, können wir das gesamte Array mit einem einzeiligen printf
-Aufruf ausgeben.
Wenn das abschließende Null-Byte nicht angegeben wird und printf
mit dieser Methode aufgerufen wird, kann das Programm versuchen, auf Speicherbereiche zuzugreifen, was höchstwahrscheinlich zu einem Segmentierungsfehler führt.
#include <stdio.h>
#include <stdlib.h>
#define STR(num) #num
int main(void) {
char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};
char arr2[] = {'t', 'r', 'n', 'm', 'b', 'v', '\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
exit(EXIT_SUCCESS);
}
Ausgabe:
abcdeftrnmbv
trnmbv
Wie Sie sehen können, erhalten wir, wenn wir arr1
ausgeben, das keinen Nullterminator hat, weitere Zeichen, bis die Iteration einen Nullterminator erreicht - \0
.
Eine andere Methode, die Funktion printf
zu spezialisieren, besteht darin, die Anzahl der Zeichen in der Zeichenkette innerhalb des Spezifizierers %s
zu übergeben. Eine Möglichkeit, dies zu tun, ist, die Länge der Zeichenkette statisch mit einer Ganzzahl zwischen den Symbolen %
und s
fest zu kodieren, oder es kann durch das Symbol *
ersetzt werden, um ein weiteres Ganzzahl-Argument aus den printf
-Parametern zu nehmen. Beachten Sie, dass beide Methoden das Zeichen .
vor der Zahl oder dem Sternchen in den Bezeichner aufnehmen.
#include <stdio.h>
#include <stdlib.h>
#define STR(num) #num
int main(void) {
char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f'};
char arr2[] = {'t', 'r', 'n', 'm', 'b', 'v', '\0'};
printf("%.6s\n", arr1);
printf("%.*s\n", (int)sizeof arr1, arr2);
exit(EXIT_SUCCESS);
}
Ausgabe:
abcdef
trnmbv
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook