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.
#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:
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.