Buenos dias a todos , hoy mientras probaba la funcion toupper encontrada en la libreria ctype.h me surgio la necesidad de convertir una cadena en mayusculas para poderla comparar con una frase ya predeterminada , he visto que la funcion toupper solo me funciona a la hora de convertir un solo caracter , pero a la hora de querer convertir toda una cadena en mayusculas con esta funcion no me deja , alguien sabe si la unica opcion para convertir toda la cadena en mayusculas es ir convirtiendo caracter por caracter en mayusculas?, es decir:
char c1[4];
printf("Ingresa una frase "); \*Ingresa "hola" en minusculas *\
\*Converti en Mayusculas*\
for (int j=0;j<4;j++){
c1[j]=toupper(c1[j]);
}
O se podria realizar con ayuda de alguna funcion de manera que se transformara toda la cadena en mayuscula en un solo paso.
NOTA: ESTE ES EL PROGRAMA QUE INTENTO REALIZAR , LO UNICO QUE QUISIERA MODIFICAR ES QUE SI LA FRASE SE ESCRIBE EN MINUSCULAS SE CONVIERTA A MAYUSCULAS PARA QUE SE PUEDA VERIFICAR CON LA FRASE.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(){
char c1[]="TIENES", c2[]="QUE SER", c3[]="INVITADO", c4[]="PARA", c5[]="INGRESAR", cE[20],band=0;
printf("Este es un programa que se encarga de verificar 5 claves para poder entrar a una fiesta\nIngresa la primera clave\n");
scanf("%s",cE);
getchar();
if (strcmp(c1,cE)==0){
printf("Ingresa la segunda clave\n");
gets(cE);
if(strcmp(c2,cE)==0){
printf("Ingresa la tercera clave\n");
scanf("%s",(cE));
if(strcmp(c3,cE)==0){
printf("Ingresa la cuarta clave\n");\
scanf("%s",cE);
if(strcmp(c4,cE)==0){
printf("Ingresa la quinta clave\n");
scanf("%s",cE);
if(strcmp(c5,cE)==0){
printf("BIENVENIDO A LA FIESTA\n");
band=1;
}
}
}
}
}
if(band==0)
printf("TE EQUIVOCASTE DE FIESTA\n");
}
Tiene que ser carácter a carácter. Si quieres hacerlo de una vez genera una función que tome dicha cadena y pase toupper carácter a carácter. Al regresar tendrás tu cadena en mayúsculas.
Por cierto, para guardar "hola" necesitas un array de 5 caracteres. Acuérdate que toda cadena tiene un carácter NUL ('\0') al final para marcar el fin de ésta.
Esta solucion es mas general. Y segura
char w[]=...
for( ; *w ; w++) *w=toupper(*w);
Dentro de una rutina...
#include <stdio.h>
#include <ctype.h>
char *toupper_w(char *w)
{
char *c=w;
for( ; *w ; w++) *w=toupper(*w);
return (w=c);
}
int main(int argc, char *args[])
{
char w[512];
while (scanf("%s",w)!=EOF)
printf("%s \n",toupper_w(w));
return 0;
}
Da esta salida
La
LA
Estacion
ESTACION
de
DE
SERRRvicio
SERRRVICIO