#include <stdio.h>
#define CERO 1
#define UNO 2
#define DOS 3
int mi_strlen( char * str) {
int num_char;
while ( * str!= '\0 ' ) {
num_char++;
str++;
}
return num_char;
}
char * mi_strcpy( char * d, char * s) {
int c = 0 ;
while ( s[ c] != '\0 ' ) {
d[ c] = s[ c] ;
c++;
}
d[ c] = '\0 ' ;
return d;
}
char * mi_strcat( char * s1, char * s2) {
char concatena[ mi_strlen( s1) + mi_strlen( s2) + 1 ] ;
char * con_ptr;
con_ptr = concatena;
while ( * s1!= '\0 ' ) {
* con_ptr=* s1;
con_ptr++;
s1++;
}
while ( * s2!= '\0 ' ) {
* con_ptr=* s2;
con_ptr++;
s2++;
}
con_ptr++;
* con_ptr= '\0 ' ;
s1= concatena;
return s1;
}
int main( void ) {
char * str;
char str_uno[ UNO] = "A" ;
char str_cero[ CERO] = "" ;
char str_espacios[ DOS] = " " ;
char str_copiada[ 11 ] ;
str = str_uno;
int cuenta = mi_strlen( str) ;
printf ( "Cuenta %d y debería ser %d\n " , cuenta
, UNO
- 1 ) ;
str = str_cero;
cuenta = mi_strlen( str) ;
printf ( "Cuenta %d y debería ser %d\n " , cuenta
, CERO
- 1 ) ;
str = str_espacios;
cuenta = mi_strlen( str) ;
printf ( "Cuenta %d y debería ser %d\n " , cuenta
, DOS
- 1 ) ;
char * s1;
char * s2;
s1 = str_copiada;
s2 = str_uno;
printf ( "s1 es: \" %s\" y debería ser s2: %s\n " , mi_strcpy
( s1
, s2
) , s2
) ;
char str_copiada2[ 11 ] ;
s1 = str_copiada2;
s2 = str_cero;
printf ( "s1 es: \" %s\" y debería ser s2: \" %s\" \n " , mi_strcpy
( s1
, s2
) , s2
) ;
char str_copiada3[ 11 ] ;
s1 = str_copiada3;
s2 = str_espacios;
printf ( "s1 es: \" %s\" y debería ser s2: \" %s\" \n " , mi_strcpy
( s1
, s2
) , s2
) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIENFUk8gMQojZGVmaW5lIFVOTyAyCiNkZWZpbmUgRE9TIDMKIAppbnQgbWlfc3RybGVuKGNoYXIgKnN0cil7CglpbnQgbnVtX2NoYXI7Cgl3aGlsZSgqc3RyIT0nXDAnKXsKCQludW1fY2hhcisrOwoJCXN0cisrOwoJfQoJcmV0dXJuIG51bV9jaGFyOwp9CgpjaGFyKiBtaV9zdHJjcHkoY2hhciogZCwgY2hhciogcykgewogICBpbnQgYyA9IDA7CiAKICAgd2hpbGUgKHNbY10gIT0gJ1wwJykgewogICAgICBkW2NdID0gc1tjXTsKICAgICAgYysrOwogICB9CiAgIGRbY10gPSAnXDAnOwogICAKICAgcmV0dXJuIGQ7Cn0KCmNoYXIqIG1pX3N0cmNhdChjaGFyKiBzMSwgY2hhciogczIpewoJY2hhciBjb25jYXRlbmFbbWlfc3RybGVuKHMxKSttaV9zdHJsZW4oczIpKzFdOwoJY2hhciAqY29uX3B0cjsKCWNvbl9wdHIgPSBjb25jYXRlbmE7Cgl3aGlsZSgqczEhPSdcMCcpewoJCSpjb25fcHRyPSpzMTsKCQljb25fcHRyKys7CgkJczErKzsKCX0KCXdoaWxlKCpzMiE9J1wwJyl7CgkJKmNvbl9wdHI9KnMyOwoJCWNvbl9wdHIrKzsKCQlzMisrOwoJfQoJY29uX3B0cisrOwoJKmNvbl9wdHI9J1wwJzsKCXMxPWNvbmNhdGVuYTsKCXJldHVybiBzMTsKfQogCmludCBtYWluKHZvaWQpIHsKCWNoYXIgKnN0cjsKCWNoYXIgc3RyX3Vub1tVTk9dID0gIkEiOwoJY2hhciBzdHJfY2Vyb1tDRVJPXSA9ICIiOwoJY2hhciBzdHJfZXNwYWNpb3NbRE9TXSA9ICIgICI7CgljaGFyIHN0cl9jb3BpYWRhWzExXTsKIAoJc3RyID0gc3RyX3VubzsKCWludCBjdWVudGEgPSBtaV9zdHJsZW4oc3RyKTsKIAoJcHJpbnRmKCJDdWVudGEgJWQgeSBkZWJlcsOtYSBzZXIgJWRcbiIsIGN1ZW50YSwgVU5PLTEpOwogCglzdHIgPSBzdHJfY2VybzsKCWN1ZW50YSA9IG1pX3N0cmxlbihzdHIpOwogCglwcmludGYoIkN1ZW50YSAlZCB5IGRlYmVyw61hIHNlciAlZFxuIiwgY3VlbnRhLCBDRVJPLTEpOwogCglzdHIgPSBzdHJfZXNwYWNpb3M7CgljdWVudGEgPSBtaV9zdHJsZW4oc3RyKTsKIAoJcHJpbnRmKCJDdWVudGEgJWQgeSBkZWJlcsOtYSBzZXIgJWRcbiIsIGN1ZW50YSwgRE9TLTEpOwogCgljaGFyICpzMTsKCWNoYXIgKnMyOwoJczEgPSBzdHJfY29waWFkYTsKCXMyID0gc3RyX3VubzsKCXByaW50ZigiczEgZXM6IFwiJXNcIiB5IGRlYmVyw61hIHNlciBzMjogJXNcbiIsbWlfc3RyY3B5KHMxLHMyKSxzMik7CiAgICAKCWNoYXIgc3RyX2NvcGlhZGEyWzExXTsKCXMxID0gc3RyX2NvcGlhZGEyOwoJczIgPSBzdHJfY2VybzsKCXByaW50ZigiczEgZXM6IFwiJXNcIiB5IGRlYmVyw61hIHNlciBzMjogXCIlc1wiXG4iLG1pX3N0cmNweShzMSxzMiksczIpOwogCgljaGFyIHN0cl9jb3BpYWRhM1sxMV07CglzMSA9IHN0cl9jb3BpYWRhMzsKCXMyID0gc3RyX2VzcGFjaW9zOwoJcHJpbnRmKCJzMSBlczogXCIlc1wiIHkgZGViZXLDrWEgc2VyIHMyOiBcIiVzXCJcbiIsbWlfc3RyY3B5KHMxLHMyKSxzMik7CiAgICAKCXJldHVybiAwOwp9Cg==