November 12
Quando si lavora con 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 dalla parola chiave "char *" 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 immagazzina l'allora la funzione "realloc" stringa e di modificare la dimensione del blocco di memoria.
1 Aprire il file sorgente C in un editor come Microsoft Visual Studio Express.
2 Aggiungere il seguente codice nella parte superiore del file di origine C in modo che sia possibile accedere alle funzioni di memoria:
includere <stdio.h> includere <stdlib.h>
3 Dichiarare le variabili che si intende utilizzare, aggiungendo il seguente codice nella parte superiore della funzione:
char
buf, cur_ptr, * temp_ptr;
char c;
size_t mem_size = 200;
size_t mem_used = 0;
4 Chiamare la funzione "malloc" per allocare un blocco di memoria che è possibile utilizzare per memorizzare la stringa, aggiungendo il codice:
buf =
(char) malloc ((mem_size) sizeof (char));
if (buf == null) return -1;
5 Ricevere input dell'utente, un carattere alla volta, fino a quando una nuova riga ( '\ n') vengono inseriti carattere o 200 caratteri, aggiungendo il codice:
cur_ptr = buf;
while ((c = getchar ())! = '\ n') {
* Cur_ptr ++ = c;
mem_used ++;
if (mem_used == mem_size) break;
}
6 Chiamare la funzione "realloc" per riallocare il blocco di memoria, riducendo la sua dimensione da 2, con il seguente codice:
if (mem_used> 2) {
mem_size - = 2;
temp_ptr = realloc (buf, mem_size);
if (temp_ptr == null) return -1;
buf = temp_ptr;
cur_ptr = buf + mem_used;
}
Il puntatore "buf" indica l'inizio del blocco di memoria "stringa" e "cur_ptr" indica la posizione attuale, che è la fine della "stringa".
7 Chiamare la funzione "libero" per liberare il blocco di memoria per la stringa, altrimenti il 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.