Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: .-Gaston-. en 29 Junio 2005, 00:01 am



Título: Novato: funcion tolower y toupper. Ayuda
Publicado por: .-Gaston-. en 29 Junio 2005, 00:01 am
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


Título: Re: Novato: funcion tolower y toupper. Ayuda
Publicado por: Juan_Perez en 29 Junio 2005, 00:41 am
Cuando declaras una variable de esta manera
Código:
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
Código:
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í
Código:
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
Código:
sprintf (texto, "%s", "gaston");
Otra forma es asignarle directamente cada letra que compone la cadena "gaston" al arreglo texto así
Código:
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.


Título: Re: Novato: funcion tolower y toupper. Ayuda
Publicado por: Juan_Perez en 29 Junio 2005, 00:46 am
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í
Código:
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.


Título: Re: Novato: funcion tolower y toupper. Ayuda
Publicado por: .-Gaston-. en 29 Junio 2005, 03:50 am
Ok. Muchisimas gracias. Quedó todo mas que claro.
Saludos.
Gaston.


Título: Re: Novato: funcion tolower y toupper. Ayuda
Publicado por: 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  :)


Título: Re: Novato: funcion tolower y toupper. Ayuda
Publicado por: leosansan en 28 Diciembre 2013, 10:20 am
Oye me podrias explicar detalladamente como funciona el proceso del for con la funcion toupper por favor  :)

Código:
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! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)