Quando si lavora con le stringhe in C , può essere utile per aumentare dinamicamente o ridurre le dimensioni di una stringa di gestire la memoria in modo efficiente . Stringhe normali definiti dal "char * " parola chiave hanno dimensioni statiche che non possono cambiare , quindi è necessario lavorare direttamente con i blocchi di memoria , invece. Utilizzare la funzione " malloc " per creare un blocco di memoria che memorizza la stringa e poi la funzione " realloc " per cambiare la dimensione del blocco di memoria . Istruzioni
1
Aprire il file sorgente C in un editor come Microsoft Visual Studio Express .
2
Aggiungere il seguente codice nella parte superiore del vostro file sorgente C in modo che è possibile accedere alle funzioni di memoria :
# include
# include
3
dichiarare variabili che si intende utilizzare , aggiungendo il seguente codice nella parte superiore della vostra funzione :
char * buf , * cur_ptr , * temp_ptr ;
char c ;
mem_size size_t = 200 ;
size_t mem_used = 0;
4
richiamare la funzione " malloc " per allocare un blocco di memoria che è possibile utilizzare per memorizzare la stringa , aggiungendo il codice : < br
buf > = ( char * ) malloc ( ( mem_size ) * sizeof ( char) ) ;
if ( buf == NULL) return -1 ;
5
ricevere l'input dell'utente , un carattere alla volta , fino a quando un carattere di nuova riga ( '\\ n' ) o di 200 caratteri vengono inseriti , aggiungendo il codice :
cur_ptr = buf ;
while ( ( c = getchar ( ) ) = '\\ n' ) {
* cur_ptr + + = c ; !
mem_used + + ;
se ( mem_used == mem_size ) break; < br >
}
6
richiamare la funzione " realloc " per riallocare il blocco di memoria , riducendo la sua dimensione da 2 , con il seguente codice :
se ( mem_used > 2 ) {
mem_size - = 2;
temp_ptr = realloc ( buf , mem_size ) ;
se ( temp_ptr == NULL) return -1 ;
< p > buf = temp_ptr ;
cur_ptr = buf + mem_used ;
}
il puntatore " buf " indica l'inizio del blocco di memoria " stringa" e " cur_ptr " punta alla posizione corrente , che è il fine della " stringa ".
7
richiamare la funzione " libera " per liberare il blocco di memoria per la stringa , altrimenti il vostro programma avrà una perdita di memoria , aggiungendo il codice : .
gratuito ( buf ) ;
8
Salvare il file C , compilare ed eseguire il programma per eseguire il nuovo codice stringa