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
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.
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.
Ok. Muchisimas gracias. Quedó todo mas que claro.
Saludos.
Gaston.
Oye me podrias explicar detalladamente como funciona el proceso del for con la funcion toupper por favor :)
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! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)