I Puntatori a Caratteri (funzionamento strcpy: funzione di libreria)
1 settembre 2013  //  By:   //  C  //  No Comment   //   1020 Views

In C una stringa del tipo “Ciao Mondo” non è un oggetto inteso come un’unità singola, ma è un vettore di caratteri.

La rappresentazione interna della stringa termina con il carattere nullo ‘\0’ chiamato carattere di fine stringa, indispensabile affinchè il vostro programma possa capire quando questa termina.
NB. Quando dichiarate una stringa cioè come un vettore di caratteri ricordatevi sempre di assegnare un carattere in piu per il carattere terminatore di stringa!! quindi la lunghezza nell’esempio di prima “Ciao Mondo” sarà 11 e non 10!

Ora passiamo alla differenza tra dichiarare una stringa come vettore di caratteri o come puntatore a caratteri:

stringa è in vettore grande abbasanza per contenere la stringa e il carattere terminatore. I caratteri contenuti in stringa possono essere modificati nel programma ma stringa farà riferimento sempre alla stessa zona di memoria.

p_stringa è un puntatore inizializzato con una costante stringa esso potrà essere modificato ma se si cambia il contenuto della stringa otterremo un risultato indefinito.

Vedremo come date due stringhe str1 e str2 sia possibile copiare la stringa str2 nella stringa str1! Se pensate di fare s=t state SBAGLIANDO!!!

 

Nei due esempi abbiamo fatto scorrere lungo i vettori un carattere per volta fino a quando il carattere ‘\0’ che termina str2 sia stato copiato in str1.

Chi è esperto del C gradirebbe leggere una versione di questo tipo:

L’occhio esperto noterebbe che il confronto con ‘\0’ è ridondante, in quanto ciò che ci interessa è che l’espressione sia zero quindi possiamo riscrivere il tutto così: 

Nella libreria standard del C la funzione strcpy (<string.h>) fa proprio questo, cioè restituisce come valore la stringa copiata.

About the Author :

BI CONSULTING. Studente di Ingegneria Informatica, Sistemista Linux e appassionato di tutto ciò che sia tecnologico ma soprattutto Open Source. Distro: Debian e Arch LInux. Smartphone: Nexus / Lg G2 Buona Lettura  Visualizza il profilo su Linkedln

Leave a reply