Bei der Arbeit mit Strings in C, kann es hilfreich sein , um dynamisch zu erhöhen oder reduzieren Sie die Größe eines Strings , um den Speicher effizient zu verwalten. Normale Saiten durch die " char * " keyword definiert haben statische Größen, die nicht geändert werden können , so müssen Sie direkt mit Speicherblöcke statt . Verwenden Sie die " malloc "-Funktion , um einen Speicherblock , der die Zeichenfolge und dann die " realloc "-Funktion , um den Speicherblock Größe ändern speichert erstellen. Anleitung
1
Öffnen Sie Ihre C-Quelldatei in einem Editor wie z. B. Microsoft Visual Studio Express .
2
Fügen Sie den folgenden Code am Anfang des C-Quelldatei , so dass Sie können auf die Memory-Funktionen :
# include
# include
3
Variablen deklarieren dass Sie , indem Sie den folgenden Code am Anfang Ihrer Funktion verwenden:
char * buf , * akt_zgr , * temp_ptr ;
char c ;
size_t mem_size = 200;
size_t mem_used = 0;
4
Rufen Sie die " malloc "-Funktion , um einen Block von Speicher , die Sie verwenden, um die Zeichenfolge zu speichern zuordnen können , indem Sie den Code :
buf = (char *) malloc ( ( mem_size ) * sizeof ( char) );
if ( buf == NULL) return -1 ;
5
Erhalten Benutzereingaben, ein Zeichen in einer Zeit, bis ein Zeilenumbruch ('\\ n ') Zeichen oder 200 Zeichen eingegeben werden , indem Sie den Code eingeben:
akt_zgr = buf ;
while (( c = getchar ()) = '\\ n' ) {
* akt_zgr + + = c ; !
mem_used + +;
if ( mem_used == mem_size ) break;
}
6
Rufen Sie die " realloc "-Funktion , um den Speicherblock , wodurch seine Größe von 2 , mit dem folgenden Code umzuschichten :
if ( mem_used > 2 ) {
mem_size - = 2;
temp_ptr = realloc ( buf , mem_size );
if ( temp_ptr == NULL) return -1 ;
< p > buf = temp_ptr ;
akt_zgr = buf + mem_used ;
}
der Zeiger " buf " zeigt auf den Anfang des "string" Speicherblock und " akt_zgr " Punkte auf die aktuelle Position , die das Ende der ist "string ".
7
die "freie "-Funktion aufrufen , um den Speicherblock für die Zeichenfolge freigeben , sonst wird Ihr Programm haben einen Speicherverlust , indem Sie den Code : .
kostenlos ( buf) ;
8
Speichern Sie Ihre C -Datei, kompilieren und starten Sie das Programm , um die neue Zeichenfolge Code auszuführen