Programación General > C/C++
Cambiar Mayusculas Minusculas
sagoher:
Hola! y gracias de antemano! os cuento, tengo un problema con un programiya que estoy haciendo, se trata de cambiar una cadena de caracteres de minusculas a mayusculas teniendo en cuenta la ñ, y es aqui donde surge mi problema, os copio aqui el codigo por si alguien puede ayudarme:
#include<stdio.h>
#include<conio.h>
void minmay(unsigned char vector[]);
void main()
{
char cadena[100];
printf("Introduce una cadena:");
gets(cadena);
minmay(cadena); /* Llama a la funcion */
printf ("En Mayusculas: %s\n", cadena);
getch();
}
void minmay(unsigned char vector[])
{
int i;
int desp='a'-'A';
for (i=0;vector!='\0';++i)
{
if (vector=='ñ')
vector='Ñ';
if(vector>='a'&&vector<='z')
{
vector=vector-desp;
}
}
}
gracias otra vez !!
Mollense:
Bueno, pero ¿Cuál es el problema?
sagoher:
que no cambia la ñ de minuscula a mayuscula
ProfesorX:
El problema tiene que ver con las codificaciones ASCII, que windows usa ISO 8859-1 y MS-DOS utiliza la pagina de codigos 437 u 850, entonces, si tu editas tu archivo en windows, el codigo ASCII en windows no coincide con el codigo en MS-DOS y viceversa.
Podrias probar comparandolo como si fuera un numero, en lugar de con una letra. El siguiente codigo funciono bien en mi windows, utilizando Code::Blocks/Mingw, tal vez funcione en el tuyo. Por cierto, no utilices la libreria conio de borland, no es portable.
--- Código: Text --- #include<stdio.h> void minmay(char vector[]); int main(){ char cadena[100]; printf("Introduce una cadena:"); gets(cadena); minmay(cadena); /* Llama a la funcion */ printf ("En Mayusculas: %s\n", cadena); getchar(); return 0;} void minmay(char vector[]){ int i; int desp='a'-'A'; for (i=0;vector[i]!='\0';++i) { if (vector[i] == -92) { vector[i] = -91; } if (vector[i]>='a'&&vector[i]<='z') { vector[i]=vector[i]-desp; } }}
Si necesitas sabes que numero coincide con que letra, podrias utilizar este pequeño ciclo.
--- Código: Text --- char j; for (j = -128; j <= 127; j++) { printf("%c = %d\n", j, j); if (j == 127) break; }
Saludos 8)
floppy22:
te resolvieron tu problema...iba a aportar pero se me adelantaron... :o :whistling:
Navegación
[#] Página Siguiente
Ir a la versión completa