| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
jorgeiv500
Registrado: 16 Oct 2005 Mensajes: 3
| Publicado: 17/10/2005 3:22 pm | | | Título: mayusculas a minusculas |
| como hago para pasar de nayusculas a minusculas en cadenas de datos o vectores |
|
| Volver arriba | |
 |
the_end
Registrado: 05 Sep 2005 Mensajes: 80 Ubicación: FISI
| Publicado: 17/10/2005 4:08 pm | | | Título: Re: mayusculas a minusculas |
| Ya que estoy de humor, aqui te mando el codigo:
Funcion que convierte a minusculas los caracteres encontrados en una cadena. Sólo modificará los valores reconocidos como caracteres MAYÚSCULAS, el resto lo deja como esta.
| Código: | #include <stdio.h>
#define LONG_MAX 81
void UpperToLower (char str[]) { for (int k = 0; (str[k] != 0) && (k <= LONG_MAX - 1); k++) { if (str[k] >= 'A' && str[k] <= 'Z') { str[k] = str[k] + 'a' - 'A'; } } }
int main () { char strCad[LONG_MAX]; int k;
printf ("Introduce cadena: ");
k=0; while (((strCad[k] = getchar()) != '\n') && (k < LONG_MAX -1)) k++;
strCad[k] = 0;
UpperToLower (strCad); // Funcion que necesitas
printf ("%s", strCad);
system ("PAUSE"); return 0; }
|
Per tambien puedes hacerlo usando la funcion "tolower ()": - int tolower (int ch): devuelve el equivalente en minuscualas de 'ch', si 'ch' es una letra; en otro caso devulve 'ch' sin modificar. Tu eliges.. 
EOF |
|
| Volver arriba | |
 |
Karman
Registrado: 15 Oct 2005 Mensajes: 357
| Publicado: 17/10/2005 4:26 pm | | | Título: |
| otra posible respuesta... un poco mas complicada...
char *UpperToLower (char *str) { char *tmp=str; while(*tmp){if((*tmp>='A')&&(*tmp<='Z'))*tmp-=0x20;tmp++;} return str; } _________________ www.inexinferis.co.nr
-. Karman .- |
|
| Volver arriba | |
 |
|
the_end
Registrado: 05 Sep 2005 Mensajes: 80 Ubicación: FISI
| Publicado: 17/10/2005 5:04 pm | | | Título: |
| Ten cuidado con lo que haces karman, los punteros son cosa seria y un error puede causar problemas insospechados...
| Karman escribió: | otra posible respuesta... un poco mas complicada...
char *UpperToLower (char *str) { char *tmp=str; while(*tmp){if((*tmp>='A')&&(*tmp<='Z'))*tmp-=0x20;tmp++;} return str; } |
Esta bien tu intento pero, porque devuelves 'str' ??, si ya lo estas modificando, la cadena que se ha ingresado, con el puntero *tmp. Al cambiar *tmp, tambien cambia el valor al que apunta en la cadena 'str'. Y además, *temp -= 0x20 no sería así; Aquí se devería SUMAR. Entonces ordenando, quedaría así:
| Código: | void UpperToLower (char *str) { char *tmp = str; while (*tmp) { if((*tmp>='A')&&(*tmp<='Z')) *tmp += 0x20; tmp++; } }
|
No retorna nada, ya que en la misma funcion se esta modificando los caracteres de la cadena. Entonces con la llamada :
| Código: | UpperToLower (strCad); | se tendría la cadena 'strCad' en minusculas.. Saludos, EOF |
|
| Volver arriba | |
 |
|
|