Buenas a todos, desde ya gracias de antemano, tengo problemas a la hora de imprimir las ñ, Ñ, y letras con acento, el programa tiene hacer lo siguiente:
Al introducir por teclado un texto (minúsculas y mayúsculas con espacios) a la salida debe mostrar su correspondiente en ASCII asociado a su carácter, bueno mejor les dejo un ejemplo:
Entrada "aDñ s1á!"
Salida a=97 (Caracter)
D=68 (Caracter)
ñ=164 (Caracter)
" "=32 (Espacio no imprimible)
s=115 (Caracter)
1=49 (Digito)
á=160(Caracter)
!=33 (Signo de Puntuacion)
Esa es la idea, y la verdad no se como hacer funcionar la parte de la ñ, y las letras con acento aqui lo que hice hasta ahora:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main ()
{
char palabra[80];
int a,i,v;
printf("Introduzca los caracteres:\n");
gets(palabra);
a=strlen(palabra);
a=a-1;
for(i=0;i<=a;i++)
{
v=palabra[i];
if((v>=65 & v<=90)||(v>=97 & v<=122))
{
printf(" %c = %d \t (Car%ccter)\n", palabra[i],v,160);
}
else
{
if(v>=48 & v<=57)
{
printf(" %c = %d \t (Digito)\n", palabra[i],v);
}
else
{
if((v==164)||(v==165)||(v==160)||(v==130)||(v==162)||(v==163)||(v==161)||(v==181)||(v==144)||(v==181)||(v==214)||(v==214)||(v==224)||(v==233))
{
printf(" %c = %d \t (Car%ccter)\n", palabra[i],v,160);
}
else
{
if((v==63)||(v==64)||(v==168)||(v==173)||(v==33)||(v==58)||(v==47)||(v==92))
{
printf(" %c = %d \t (Signo de puntuaci%cn)\n", palabra[i],v,162);
}
else
{
if((v==32))
{
printf(" %c = %d \t (Espacio no imprimible)\n", palabra[i],v);
}
else
{
printf(" %c = %d \t (Car%ccter no imprimible)\n", palabra[i],v,160);
}
}
}
}
}
}
system ("pause");
}
http://foro.noticias3d.com/vbulletin/showthread.php?t=400663 (http://foro.noticias3d.com/vbulletin/showthread.php?t=400663)
Hola diegofah.
Si estas trabajando en consola de Windows, intenta de este modo:
Citar
void printUCode(char* str) {
int i;
for(i=0; i<strlen(str); i++) {
switch(str){
case 'á': printf("\240"); break;
case 'é': printf("\202"); break;
case 'í': printf("\241"); break;
case 'ó': printf("\242"); break;
case 'ú': printf("\243"); break;
case 'Á': printf("%c",-75); break;
case 'É': printf("%c",-112); break;
case 'Í': printf("%c",-42); break;
case 'Ó': printf("%c",-32); break;
case 'Ú': printf("%c",-23); break;
case 'Ñ': printf("%c",-91); break;
case 'ñ': printf("%c",-92); break;
default: printf("%c", str);
}
}
}
Uso:
Citar
printUCode("ÁÉÍÓÚÑáéíóúñ");
(Usé las etiquetas "code" para que se visualizen correctos los caracteres)
Saludos.
en el default, str+i
Hola ivancea96.
Tenes razón, gracias por la observación. Corrijo:
void printUCode(char* str) {
int i;
for(i=0; i<strlen(str); i++) {
switch(str[i]){
case 'á': printf("\240"); break;
case 'é': printf("\202"); break;
case 'í': printf("\241"); break;
case 'ó': printf("\242"); break;
case 'ú': printf("\243"); break;
case 'Á': printf("%c",-75); break;
case 'É': printf("%c",-112); break;
case 'Í': printf("%c",-42); break;
case 'Ó': printf("%c",-32); break;
case 'Ú': printf("%c",-23); break;
case 'Ñ': printf("%c",-91); break;
case 'ñ': printf("%c",-92); break;
default: printf("%c", str[i]);
}
}
}
Saludos.