[C con Clase] QUE PASA EN LAS ENTRAÑAS DEL "STRCPY"

Cesar Rada rada.cesar en gmail.com
Sab Jun 20 02:09:08 CEST 2009


2009/6/20 Programante <programante en gmail.com>

> Pedro Rodríguez González escribió:
> >  Hola q tal! Bueno yo de la lista soy el menos hablador, y creo que es
> > hora de preguntar a los "masters", aunque mi duda va dirigida a todos
> > los miembros y/ miembras/ :) . Resulta que un chaval necesita realizar
> > un ejercicio de desbordamiento del "*montón*", para ello usó un
> > sencillo programa en C que toma un argumento de la línea de comando
> > (cadena) y la copia, mediante un *strcpy* a un puntero que tiene
> > asignada unos cuantos bytes, mediante un *malloc*. El tema es que por
> > muy larga que sea la cadena no se produce ningún error de segmentación
> > ni nada por el estilo, aún superando con creces el puntero destino.
> > Desconozco cómo funciona internamente un *strcpy* por lo que deduzco
> > que ésta función posiblemente realiza algún arreglo moficando
> > dinamicamente el tamaño del puntero destino. ¿ Alguien puede aclararme
> > algo más ? Muchas gracias por adelantado y saludos nuevamente.
> >
> > Pedro
>
> No. strcpy() no hace nada de todo eso.
>
> Es una función de lo más simple. Una forma de implementarla sería:
>
> |char *strcpy(char *restrict /s1/, const char *restrict /s2/) {
>    int i;
>    for (i=0; ||s1[i] = s2[i];|| i++);
>    return s1;
> }
>

Otra sería:

void strcpy(char *s, char *t){
    while(*s++ = *t++)
       ;
}

Del libro, El lenguaje de Programación C, autor: Kernighan y Ritchie.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090620/a6c5019d/attachment.html>


Más información sobre la lista de distribución Cconclase