strcpy

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search

strcpy è una funzione della libreria standard del C definita nel file header string.h che copia una stringa da una locazione ad un'altra.

Il prototipo della funzione è:[1]

 char *strcpy(char *destinazione, const char *sorgente);

L'ordine degli argomenti fa in modo che l'assegnazione sia fatta in modo che sorgente sia copiato in destinazione.

Esempio d'uso[modifica | modifica wikitesto]

Ad esempio

char *str1 = "abcdefghijklmnop";
char *str2 = malloc(sizeof(char)*100); /* deve essere abbastanza grande in modo da contenere l'intera stringa! */
strcpy(str2, str1); /* str2 ora e' "abcdefghijklmnop" */
str2[0] = 'A'; /* str2 ora e' "Abcdefghijklmnop" */

Nella seconda linea è allocata la memoria per la copia della stringa, poi la stringa è copiata da un blocco di memoria ad un altro, infine la prima lettera della stringa copiata viene modificata.

Implementazione[modifica | modifica wikitesto]

Una comune implementazione della funzione è:

char *strcpy(char *dest, const char *src)
{
   while(*dest++ = *src++);
   return dest;
}

Un'altra implementazione, molto più coincisa, è:

void strcpy( char *dst, const char *src )
{
    for( ;*dst++ = *src++; );
}

dove la copiatura viene effettuata direttamente nell'espressione di test del ciclo for assieme all'incremento dei due puntatori. Alla copiatura dello \0 finale, l'assegnamento assumerà appunto il valore 0 facendo terminare il ciclo.

Ovviamente la "vera" strcpy è più complessa di così, dovendo tenere in considerazione i vari casi di overlap (sovrapposizione) e di posizione relativa delle due stringhe in memoria.[senza fonte]

Note[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica