Novato: funcion tolower y toupper. Ayuda

Iniciado por .-Gaston-., 29 Junio 2005, 00:01 AM

0 Miembros y 1 Visitante están viendo este tema.

.-Gaston-.

Que tal. Bueno, aunque vengo hace rato con el tema de la programacion, he estadop estudiando C y me encontré con una dudilla. Estoy con C en Linux.
En el turorial que estoy leyendo dice que no puedo hacer:
char texto[20];
texto = "gaston";
O sea, no puedo declarar la variable y despues asignarle un valor. Pero si puedo hacer ésto:
char texto[20];
scanf("%s",texto);
Ahora mis preguntas son dos:
1.-Si yo declaro la variable y no le doy un valor, ¿como se lo doy despues?
2.-Si el valor lo obtengo leyendolo con scanf (lo que ingresa un usuario), ¿como lo paso a mayusculas o a minusculas?Porque probé la funcion toupper y tolower, pero al resultado tengo que guardarlo en una variable, que es el caso que expuse mas arriba.
Espero haberme podido expresar bien.
Saludos y gracias de antemano.
Gaston

Juan_Perez

Cuando declaras una variable de esta manera

char texto[20];

estás declarando un arreglo de 20 caracteres y no le puedes asignar un valor directamente con el signo =. Si quieres asignarle la cadena "gaston" a este arreglo lo puedes hacer de varias maneras. Una es usando el signo = al momento de declarar el arreglo, de esta manera

char texto[20] = "gaston";

el compilador es quien se encarga de que el arreglo texto se inicialice con la cadena "gaston". Otra manera es usando la función strcpy declarada en el encabezado <string.h>, el cual copia una cadena en otra. así

strcpy (texto, "gaston");

Otra manera es usando la función sprintf declarada en el encabezado <stdio.h>, que hace lo mismo que la función printf, pero en vez de formatear la salida a la pantalla, la manda a una cadena. Lo harías de esta forma

sprintf (texto, "%s", "gaston");

Otra forma es asignarle directamente cada letra que compone la cadena "gaston" al arreglo texto así

texto[0] = 'g';
texto[1] = 'a';
texto[2] = 's';
texto[3] = 't';
texto[4] = 'o';
texto[5] = 'n';
texto[6] = '\0';

el último caracter es el caracter nulo, y es necesario ponérselo al final ya que las cadenas en C no tienen indicación del tamaño de cada arreglo como lo hacen otros lenguajes.

Juan_Perez

Discúlpame, me faltó contestarte la segunda pregunta. Para pasar una cadena a mayúsculas o minúsculas tienes que usar la función toupper o la función tolower respectivamente a cada uno de los elementos del arreglo. Estas funciones vienen declaradas en el encabezado <ctype.h>. Para las mayúsculas lo podrías hacer así

int i;
for (i = 0; texto[i] != '\0'; i++)
   texto[i] = toupper (texto[i]);

y para las minúsculas igualmente pero usando la otra función.

.-Gaston-.

Ok. Muchisimas gracias. Quedó todo mas que claro.
Saludos.
Gaston.

PerviousNebula

Oye me podrias explicar detalladamente como funciona el proceso del for con la funcion toupper por favor  :)

leosansan

Cita de: PerviousNebula en 28 Diciembre 2013, 10:07 AM
Oye me podrias explicar detalladamente como funciona el proceso del for con la funcion toupper por favor  :)


int i;
for (i = 0; texto[i]; i++)
   texto[i] = toupper (texto[i]);
texto[i] ='\0`;


Sencillamente va recorriendo la cadena texto desde el primer caracter, texto[0] hasta el final de la cadena y en cada pasada transforma el caracter a su forma en mayúsculas.

;-)  ;-) Felices Navidades y Próspero Año Nuevo.  ;-)  ;-)

¡¡¡¡ Saluditos! ..... !!!!