Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: galapok11 en 12 Agosto 2016, 11:49 AM

Título: Crear mis propias funciones que hagan de: strcpy, strlen, strcmp, strcat
Publicado por: galapok11 en 12 Agosto 2016, 11:49 AM
Saludos, estoy buscando la manera de crear mis propias funciones que correspondan a las sigueintes: strcpy, strlen, strcmp, strcat
He conseguido realizar strcpy, y strcmp.
Pero deberia hacerlo sin las funciones for, while y do: si asi es...
Gracias por leerme, y mas un si me ayudas :)
Título: Re: Crear mis propias funciones que hagan de: strcpy, strlen, strcmp, strcat
Publicado por: AlbertoBSD en 12 Agosto 2016, 14:03 PM
Busca como trabajan las funciones recursivas sin embargo es Muy ineficiente si las haces de esa forma.

En lo personal no lo recomiendo.

Saludos
Título: Re: Crear mis propias funciones que hagan de: strcpy, strlen, strcmp, strcat
Publicado por: Yoel Alejandro en 12 Agosto 2016, 17:13 PM
Bueno sería sencillo usando ciclos con contador, ahora coincido con Alberto en que no le veo la utilidad, excepto si fuera un trabajo con fines pedagógicos o tarea escolar.
Aquí un ejemplo que implementa versiones alternativas de strcpy(), strlen(). En las versiones alternativas se utiliza el prefijo "_" en el nombre de la función, para diferenciar de la versión estándar.
Código (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>

char *_strcpy( char *s1, const char *s2 );
size_t _strlen(const char *s);

int main()
{
    char s1[100];

    _strcpy( s1, "Hola Mundo" );
    printf( "%s\n", s1 );
    printf( "Longitud es: %d\n", _strlen(s1) );
    return 0;
}

char *_strcpy( char *s1, const char *s2 )
{

    long i=0;

    while ( s2[i] != '\0' ) s1[i++] = s2[i];
    s1[i] = '\0';

    return s1;
}

size_t _strlen(const char *s)
{

    size_t N;
    char *p;

    p = (char *)s;
    N = 0;
    while ( *p != '\0' ) {
        p++;
        N++;
    }

    return N;
}


Salida:
Código (php) [Seleccionar]

Hola Mundo
Longitud es: 10


Claro está, si son versiones creadas por uno mismo las opciones son infinitas, quizá haya mejores maneras que la que yo propuse y sólo puse un ejemplo.