Come ridurre la lunghezza di una stringa in C

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.

istruzione

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.