Problema con ejercicio

vane
02 de Septiembre del 2005
Hola
Que tal !!! tengo una duda con este ejercicio en C.
A partir de un archivo de texto, tengo que leer todos los caracteres y convertirlos a mayusculas (sin usar la funcion toupper ) incluyendo las letras acentuadas y las ñ. Pasa que al tratarse de un lenguaje con alfabeto ingles, no las reconoce entonces use los ALT para una letra acentuada como por ej á >> ALT + 160.
Se entiende lo que quiero hacer ???
Aca les paso el codigo... pero no me funciona... y no se porque ...

#include &ltstdio.h>
#include &ltctype.h>

int EsNumero (const int n);
int ConvertirAMayuscula (int c);

int main () {

FILE *arch1,*arch2;
char c;

arch1 = fopen ( "original.txt", "rt");
arch2 = fopen ("nue.txt", "wt");

while ((c = fgetc (arch1)) != EOF) {
c = ConvertirAMayuscula (c);
fputc (c, arch2);}
if (EsNumero (c) != 1)
fputc(c, arch2);

fclose (arch1);
fclose (arch2);
return 0;
}

int EsNumero (const int n){

if (n >= '0' && n <= '9')
return 1;
return 0;
}

int ConvertirAMayuscula (int c)
{
switch(c)
{
case 'Alt+164':
c='Alt+165';
break;
case 'Alt+160' :
c='Á';
break;
case 'Alt+130' :
c='Alt+144';
break;
case 'Alt+162' :
c='Ó';
break;
case 'Alt+163 ' :
c='Ú';
break;
case 'Alt+161' :
c='Í';
break;
default:
c=toupper(c);
break;
}
return c ;
}


DAVID
02 de Septiembre del 2005
concuerdo con asignar directamente el número al 'char'

no soy gurú de la programación pero yo creo que la razón es precisamente c no reconoce la 'ñ' y las tildes, cuando ejecuto un programa, en código puedo asignar a un 'char' la 'ñ', pero cuando imprimo en pantalla el resultado es cualquier cosa, no será este el mismo caso.

nico
02 de Septiembre del 2005
me parece que estas cursando en la UTN no?
buen, lo unico que no entiendo es porque pones Alt+"numero" en vez de poner 'numero' directamente,,,
para que pase a mayuscula tenes que sumarle un numero en particular que calculo debe ser la diferencia entre 'a' y 'A', y en el caso de '164' debe ser '165'
suerte

Caiman
02 de Septiembre del 2005
Mira te dejo este ejemplo que convierte cualquier cadena que le introduzcas en minusculas y la convierte a mayusculas, solo agregale la lectura del archivo y podrás ver que tu problema se resuelve con un simple for anidado:

#include <stdio.h>
#include <string.h>

int main(void)
{
short int basura, cont;
char cadena[50];
char abc[]=
{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',
's','t','u','v','w','x','y','z'};

printf("Dame algun texto: ");
gets(cadena);

for(cont=0;cont<strlen(cadena);cont++)
{
short int aux;
for(aux=0;aux<=strlen(abc);aux++)
{
if(cadena[cont]==abc[aux])
cadena[cont]=abc[aux]-32;
}//abc
}//cadena

printf("n La cadena es: %s",cadena);
printf("nn Enter any key for exit");
scanf("%d",&basura);
return(0);
}