Convertir una cadena en Mayusculas

Iniciado por SDCC, 1 Febrero 2018, 23:51 PM

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

SDCC

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");

}

MAFUS

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.

dijsktra

#2
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





Si la depuración es el proceso de eliminar fallos en el software, entonces programar debe ser el proceso de ponerlos dentro. (Edsger Dijsktra)