Einführung
In diesem Lab werden Sie lernen, wie Sie Strings in der C-Programmierung erstellen und manipulieren. Sie werden verschiedene Methoden erkunden, um Strings zu definieren, sie mit printf zu formatieren, ihre Länge mit strlen zu bestimmen und sie mit strncmp zu vergleichen. Diese grundlegenden String-Operationen sind für die Entwicklung robuster und flexibler C-Anwendungen unerlässlich.
Das Lab umfasst die folgenden Schritte: Definieren von Strings mit Zeigernotation, Definieren von Strings mit lokaler Array-Notation, Formatieren von Strings mit printf, Bestimmen der Stringlänge mit strlen und Vergleichen von Strings mit strncmp. Am Ende dieses Labs werden Sie ein solides Verständnis für die Arbeit mit Strings in C haben und in der Lage sein, diese Techniken in Ihren eigenen Projekten anzuwenden.
Strings mit Zeiger-Notation definieren
In diesem Schritt werden Sie lernen, wie Sie Strings in C mit Zeigernotation definieren. Die Zeigernotation bietet eine flexible Möglichkeit, Strings in der C-Programmierung zu erstellen und zu manipulieren.
Zunächst erstellen wir eine neue Datei, um die String-Definition mit Zeigernotation zu demonstrieren:
cd ~/project
touch string_pointer.c
Geben Sie nun den folgenden Code ein:
#include <stdio.h>
int main() {
// Define a string using pointer notation
char *greeting = "Hello, C Programming!";
// Print the string
printf("Greeting: %s\n", greeting);
return 0;
}
Kompilieren und führen Sie das Programm aus:
gcc string_pointer.c -o string_pointer
./string_pointer
Beispielausgabe:
Greeting: Hello, C Programming!
Lassen Sie uns den Code analysieren:
char *greetingdeklariert einen Zeiger auf ein Zeichen (String)"Hello, C Programming!"ist ein String-Literal, das im Speicher gespeichert ist- Der Zeiger
greetingzeigt auf das erste Zeichen des Strings printf()verwendet den Format-Spezifizierer%s, um den gesamten String auszugeben
Sie können auch den Zeiger ändern, um auf verschiedene Teile des Strings zu zeigen:
#include <stdio.h>
int main() {
char *greeting = "Hello, C Programming!";
// Point to a specific part of the string
char *partial = greeting + 7;
printf("Original string: %s\n", greeting);
printf("Partial string: %s\n", partial);
return 0;
}
Beispielausgabe:
Original string: Hello, C Programming!
Partial string: C Programming!
Strings mit lokaler Array-Notation definieren
In diesem Schritt werden Sie lernen, wie Sie Strings in C mit lokaler Array-Notation definieren. Diese Methode bietet eine weitere Möglichkeit, Strings zu erstellen und zu initialisieren, wobei Sie direkter über das Zeichenarray kontrollieren können.
Erstellen wir eine neue Datei, um die String-Definition mit lokaler Array-Notation zu demonstrieren:
cd ~/project
touch string_array.c
Geben Sie den folgenden Code ein:
#include <stdio.h>
int main() {
// Define a string using local array notation
char greeting[30] = "Hello, C Programming!";
// Print the string
printf("Greeting: %s\n", greeting);
return 0;
}
Kompilieren und führen Sie das Programm aus:
gcc string_array.c -o string_array
./string_array
Beispielausgabe:
Greeting: Hello, C Programming!
Lassen Sie uns einige Variationen der lokalen Array-Notation untersuchen:
#include <stdio.h>
int main() {
// Define an array with explicit initialization
char name[10] = {'J', 'o', 'h', 'n', '\0'};
// Define an array with partial initialization
char city[20] = "New York";
// Define an array without specifying size
char message[] = "Welcome to C Programming!";
printf("Name: %s\n", name);
printf("City: %s\n", city);
printf("Message: %s\n", message);
return 0;
}
Beispielausgabe:
Name: John
City: New York
Message: Welcome to C Programming!
Wichtige Punkte zur lokalen Array-Notation:
- Sie können die Arraygröße explizit angeben.
- Das
'\0'(Null-Terminator) ist entscheidend, um das Ende des Strings zu markieren. - Arrays können mit einzelnen Zeichen oder als String-Literale initialisiert werden.
- Wenn das Array nicht vollständig initialisiert wird, werden die verbleibenden Elemente auf Null gesetzt.
Strings mit printf formatieren
In diesem Schritt werden Sie lernen, wie Sie printf() verwenden, um Strings und verschiedene Datentypen in C zu formatieren. Die printf()-Funktion bietet leistungsstarke String-Formatierungsmöglichkeiten.
Erstellen wir eine neue Datei, um die String-Formatierung zu demonstrieren:
cd ~/project
touch string_formatting.c
Geben Sie den folgenden Code ein, um verschiedene Formatierungsoptionen zu erkunden:
#include <stdio.h>
int main() {
// Basic string formatting
char name[] = "Alice";
int age = 30;
float height = 5.8;
// Simple string output
printf("Name: %s\n", name);
// Formatting with multiple variables
printf("Profile: %s is %d years old\n", name, age);
// Formatting with floating-point precision
printf("Height: %.1f meters\n", height);
// Width and alignment
printf("Name (right-aligned): %10s\n", name);
printf("Name (left-aligned): %-10s\n", name);
// Mixing different format specifiers
printf("Details: %s, %d years, %.1f meters\n", name, age, height);
return 0;
}
Kompilieren und führen Sie das Programm aus:
gcc string_formatting.c -o string_formatting
./string_formatting
Beispielausgabe:
Name: Alice
Profile: Alice is 30 years old
Height: 5.8 meters
Name (right-aligned): Alice
Name (left-aligned): Alice
Details: Alice, 30 years, 5.8 meters
Häufige Format-Spezifizierer:
%s: Strings%d: Ganzzahlen%f: Fließkommazahlen%.1f: Fließkommazahl mit 1 Dezimalstelle%10s: Rechtsbündig mit einer Breite von 10 Zeichen%-10s: Linksbündig mit einer Breite von 10 Zeichen
Lassen Sie uns fortgeschrittenere Formatierungen erkunden:
#include <stdio.h>
int main() {
// Hexadecimal and octal representations
int number = 255;
printf("Decimal: %d\n", number);
printf("Hexadecimal: %x\n", number);
printf("Octal: %o\n", number);
// Padding with zeros
printf("Padded number: %05d\n", 42);
return 0;
}
Beispielausgabe:
Decimal: 255
Hexadecimal: ff
Octal: 377
Padded number: 00042
Stringlänge mit strlen bestimmen
In diesem Schritt werden Sie lernen, wie Sie die strlen()-Funktion verwenden, um die Länge von Strings in C zu bestimmen. Die strlen()-Funktion ist Teil der <string.h>-Bibliothek und bietet eine einfache Möglichkeit, die Zeichen in einem String zu zählen.
Erstellen wir eine neue Datei, um die Berechnung der Stringlänge zu demonstrieren:
cd ~/project
touch string_length.c
Geben Sie den folgenden Code ein, um strlen() zu erkunden:
#include <stdio.h>
#include <string.h>
int main() {
// Define strings of different lengths
char greeting[] = "Hello, World!";
char name[] = "Alice";
char empty[] = "";
// Calculate and print string lengths
printf("Greeting: %s\n", greeting);
printf("Greeting length: %lu characters\n", strlen(greeting));
printf("Name: %s\n", name);
printf("Name length: %lu characters\n", strlen(name));
printf("Empty string length: %lu characters\n", strlen(empty));
return 0;
}
Kompilieren und führen Sie das Programm aus:
gcc string_length.c -o string_length
./string_length
Beispielausgabe:
Greeting: Hello, World!
Greeting length: 13 characters
Name: Alice
Name length: 5 characters
Empty string length: 0 characters
Lassen Sie uns ein praktischeres Beispiel für die Verwendung von strlen() betrachten:
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin);
// Remove newline character if present
input[strcspn(input, "\n")] = 0;
// Calculate and print string length
size_t length = strlen(input);
printf("You entered: %s\n", input);
printf("String length: %lu characters\n", length);
// Demonstrate length-based operations
if (length > 10) {
printf("This is a long string!\n");
} else if (length > 0) {
printf("This is a short string.\n");
} else {
printf("You entered an empty string.\n");
}
return 0;
}
Wichtige Punkte zu strlen():
- Gibt die Anzahl der Zeichen vor dem Null-Terminator zurück.
- Zählt den Null-Terminator nicht mit.
- Funktioniert mit Zeichenarrays und String-Literalen.
- Ist Teil der
<string.h>-Bibliothek, daher diese Header-Datei einbinden. - Gibt einen Wert vom Typ
size_t(vorzeichenlose Ganzzahl vom Typlong) zurück.
Strings mit strncmp vergleichen
In diesem Schritt werden Sie lernen, wie Sie die strncmp()-Funktion verwenden, um Strings in C zu vergleichen. Die strncmp()-Funktion ermöglicht es Ihnen, eine bestimmte Anzahl von Zeichen zwischen zwei Strings zu vergleichen.
Erstellen wir eine neue Datei, um den String-Vergleich zu demonstrieren:
cd ~/project
touch string_compare.c
Geben Sie den folgenden Code ein, um strncmp() zu erkunden:
#include <stdio.h>
#include <string.h>
int main() {
// Define strings for comparison
char str1[] = "Hello, World!";
char str2[] = "Hello, Everyone!";
char str3[] = "Hello, World!";
// Compare entire strings
printf("Full string comparison:\n");
int result1 = strncmp(str1, str2, strlen(str1));
int result2 = strncmp(str1, str3, strlen(str1));
printf("str1 vs str2: %d\n", result1);
printf("str1 vs str3: %d\n", result2);
// Compare first few characters
printf("\nPartial string comparison:\n");
int result3 = strncmp(str1, str2, 7);
printf("First 7 characters of str1 vs str2: %d\n", result3);
return 0;
}
Kompilieren und führen Sie das Programm aus:
gcc string_compare.c -o string_compare
./string_compare
Beispielausgabe:
Full string comparison:
str1 vs str2: -1
str1 vs str3: 0
Partial string comparison:
First 7 characters of str1 vs str2: 0
Lassen Sie uns ein praktischeres Beispiel für den String-Vergleich erstellen:
#include <stdio.h>
#include <string.h>
int main() {
// Password verification example
char stored_password[] = "SecretPass123";
char input_password[20];
printf("Enter password: ");
scanf("%19s", input_password);
// Compare first 10 characters of the password
int comparison = strncmp(stored_password, input_password, 10);
if (comparison == 0) {
printf("Access granted!\n");
} else {
printf("Access denied!\n");
}
return 0;
}
Wichtige Punkte zu strncmp():
- Vergleicht bis zu einer bestimmten Anzahl von Zeichen.
- Gibt 0 zurück, wenn die Strings für die angegebene Länge übereinstimmen.
- Gibt einen negativen Wert zurück, wenn der erste String lexikographisch kleiner ist.
- Gibt einen positiven Wert zurück, wenn der erste String lexikographisch größer ist.
- Ist Teil der
<string.h>-Bibliothek. - Nützlich für partielle String-Vergleiche.
Verständnis der Rückgabewerte von strncmp():
- 0: Die Strings sind für die angegebene Länge gleich.
- < 0: Der erste String kommt vor dem zweiten String.
0: Der erste String kommt nach dem zweiten String.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie Strings in der C-Programmierung sowohl mit Zeiger-Notation als auch mit lokaler Array-Notation definieren können. Mit der Zeiger-Notation können Sie Strings flexibel erstellen und manipulieren, indem Sie einen Zeichenzeiger verwenden. Mit der lokalen Array-Notation haben Sie direkteren Einfluss auf das Zeichenarray. Sie haben auch gelernt, wie Sie Strings mit printf() formatieren, die Stringlänge mit strlen() bestimmen und Strings mit strncmp() vergleichen können. Diese String-Manipulationstechniken sind grundlegende Fähigkeiten für die Arbeit mit Textdaten in C.



