al ejecutar el programa no me cambia las letras de mayusculas a minusculas o al reves. necesito ayuda. que tengo mal hecho?
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
void es_vocal(char *txt, int *v);
void transforma (char *txt, int v,int caso );
main()
{
char texto[100], *txt, opc,t;
int i=0, contt=0, cond=0,vocal;
printf("Cargue un texto menor a 100 caracteres\n");
printf("control fin de datos\n");
while ((t=getchar())!=EOF)
{
texto[contt]=t;
contt++;
}
texto[contt]='\0';
txt=texto;
clrscr();
do
{
printf("\t\t menu de opciones\n");
printf("1-> CONSONANTES DE MINUSCULAS A MAYUSCULAS\n");
printf("2-> CONSONANTES DE MAYUSCULAS A MINUESCULAS\n");
printf("3-> SALIR\n");
opc=getch();
switch(opc)
{
case'1': while(i<contt)
{
if(isalpha(*txt)>0)
{
es_vocal(txt, &vocal);
transforma(txt,vocal,1);
}
*txt++;
i++;
}
// MUESTRA
for(i=0;i<contt;i++)
{
putchar(texto);
}
break;
case'2':while(i<contt)
{
if(isalpha(*txt)>0)
{
es_vocal(txt, &vocal);
transforma(txt,vocal,2);
}
*txt++;
i++;
}
// MUESTRA
for(i=0;i<contt;i++)
{
putchar(texto);
}
break;
case'3':cond=1;
break;
default:clrscr();
printf("Opcion incorrecta\nIngrese opcion\n");
break;
}
}while(cond!=1 && opc!=3);
system("PAUSE");
return ;
}
void es_vocal(char *txt, int *v)
{
switch(*txt)
{
case'a':
case'e':
case'i':
case'o':
case'u':
case'A':
case'E':
case'I':
case'O':
case'U':
*v=1;
break;
default: *v=0;
break;
}
}
void transforma (char *txt, int v,int caso)
{
switch(caso)
{
case'1': if((v)==0)
{
if(isupper(*txt)<=0)
{
*txt=toupper(*txt);
}
else
*txt=tolower(*txt);
}
break;
case'2': if((v)==0)
{
if(isupper(*txt)>0)
{
*txt=tolower(*txt);
}
else
*txt=toupper(*txt);
}
break;
default:
break;
}
return;
}