Foro de elhacker.net

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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. char *_strcpy( char *s1, const char *s2 );
  5. size_t _strlen(const char *s);
  6.  
  7. int main()
  8. {
  9.    char s1[100];
  10.  
  11.    _strcpy( s1, "Hola Mundo" );
  12.    printf( "%s\n", s1 );
  13.    printf( "Longitud es: %d\n", _strlen(s1) );
  14.    return 0;
  15. }
  16.  
  17. char *_strcpy( char *s1, const char *s2 )
  18. {
  19.  
  20.    long i=0;
  21.  
  22.    while ( s2[i] != '\0' ) s1[i++] = s2[i];
  23.    s1[i] = '\0';
  24.  
  25.    return s1;
  26. }
  27.  
  28. size_t _strlen(const char *s)
  29. {
  30.  
  31.    size_t N;
  32.    char *p;
  33.  
  34.    p = (char *)s;
  35.    N = 0;
  36.    while ( *p != '\0' ) {
  37.        p++;
  38.        N++;
  39.    }
  40.  
  41.    return N;
  42. }

Salida:
Código
  1. Hola Mundo
  2. 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.