En C, una de las pequeñas cosas que a veces nos hace más lentos a la hora de hacer un pequeño programa es la posibilidad de darle la vuelta a una cadena. Bien, aquí traigo un pequeño código (función y ejemplo) de strrev, que además de poder dar la vuelta a una cadena, puede manipular sólo ciertos caracteres:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include <stdio.h> #include <string.h> char *strrev (char *str , int strl ) { /* Creamos punteros al principio y al final de la cadena */ /* C A R A C T E R 5 \0 */ /* | | */ char *start = str , *end = str + strl - 1; char temp ; /* Iteramos hasta que el principio y el fin coincidan */ while(start < end ) { /* Intercambiamos los caracteres */ /* 1º C A R A C T E R 5 */ /* 2º 5 A R A C T E R C */ /* 3º 5 R R A C T E A C */ /* 4º 5 R E A C T R A C */ /* 4º 5 R E T C A R A C */ temp = *start ; *start ++ = *end ; *end -- = temp ; } return str ; } /* Ejemplo */ int main () { char cadena [50]="Una cadena de caracteres cualquiera"; char tmp [50]="Una cadena de caracteres cualquiera"; char *cad2 =cadena ; printf("Cadena original: %s\n", cadena ); printf("Cadena al revés: %s\n", strrev (tmp , strlen(tmp ))); strrev (cadena +14, 10); printf("Caracteres al revés: %s\n", cad2 ); return 0; } |
Esta función la encontré hace mucho tiempo navegando y me pareció muy interesante, sobre todo por cómo está hecha, creo que es de las más rápidas.… Leer artículo completo
Últimos comentarios