Programa en C que imprime el código ASCII// Imprimir letra ñ en C y CPP

Así, a lo tonto, voy a hacerme aquí un típico ejemplo académico de C. No se si aportará mucho o si le interesará a alguien, pero lo hago por una cuestión más bien curricular (vamos, que he mandado curriculums a academias para dar clases de c y quiero que vean que podría dar clase… sí, lo digo así de sincero).

Lo primero es comentar que cuando uno hace un programa en C en castellano se va a topar con una “coñetta” muy jodona… Los caracteres ñ y Ñ no se imprimen si los pones a saco directamente en una cadena. Es decir, la instrucción “printf(“coñetta”);” saldría con algún símbolo raro en lugar de la Ñ. Pero don’t worry, imprimir una ñ, minúscula o mayúscula en C y C++ no requiere ser ingeniero informático. Y hasta tenéis varias opciones que podréis ver en el siguiente ejemplo:

void main(){
  printf(" %c ",164);//imprime una ñ minúscula
  printf(" %c ",165);//imprime una Ñ mayúscula
  printf(" xA4 ");//imprime una ñ minúscula
  printf(" xA5 ");//imprime una Ñ mayúscula
  printf(" co%co ",164);//imprime coño
  printf(" cumpleaxA4os ");//imprime cumpleaños
}

En los dos primeros ejemplos estaríamos diciendo “imprime una variable de caracter con el caracter cuyo valor ASCII sea 164” (165 en el segundo caso). Si estás mirando esto supongo que ya sabes algo de C, ya sabes que la función printf imprime datos en pantalla y que %c es una variable de caracter, y 164 y 165 no serían más que los parámetros con el valor ASCII.

En los casos 3 y 4 realmente es lo mismo. La instrucción viene a decir “imprime el caracter cuyo valor ASCII hexadecimal es A4” (A5 en el caso de la mayúscula). En cualquier caso ambos ejemplos hacen referencia a la tabla de valores ASCII.

Claro, el valor ASCII en principio es ese si nos ceñimos a Windows/MS-DOS. Pero en un SO Apple, BSD o Linux podría variar dependiendo de la distribución. Con este sencillo programa podéis imprimir toda la tabla ASCII para comprobarlo:

#include stdio.h;
void main(){
  int i; //variable contador para el bucle
  printf(“C%cdigo\t-\tLetrann”, 162);

  for(i=0; i<256; i++)//bucle for que recorre los 256 caracteres ASCII
    {
      printf(“%d\t-\t%c\n”, i, i);//imprimimos el número y el caracter
    }
}

Y así a lo tonto ya tenés in práctico programa que os imprimirá toda la tabla ASCII. Y si soy capaz de escribir esto a las cinco de la mañana volviendo de un pub, imaginad cómo puedo dar clase descansado y preparado.

8 comentarios en “Programa en C que imprime el código ASCII// Imprimir letra ñ en C y CPP

  1. Está excelente, me hiciste entender su uso en los printf, pero, ¿como debería hacer si quiero expresar que un programa que lee caracteres muestre error si se ingresa cualquier número comprendido por el conjunto de los enteros por ejemplo? Quisiera saber como decir que si la variable char es igual a un número cualquiera al ser ingresada de error, osea que tire error por cualquier ingreso de algo que no sea una letra, pero para simplificarlo, que tire error solo si se ingresan números enteros, ¿cómo hago? Estudio C desde hace solo 2 meses, no sé si iría en un IF y de ser así no sé como expresarlo.

    1. Necesitas almacenar el caracter en una variable int para así conocer su valor ASCII. Luego, y consultando una tabla de valores ASCII (una mera búsqueda en google y ya encontrarás varias) usas un IF para mostrar el error si no está en el rango de caracteres que quieres aceptar.

  2. Hola, muchísimas gracias de ante mano, estoy trabajando en un proyecto en conjunto con mi profesor de seguridad informática, en un programa que se encargue de encriptar los datos, el me comento que mi programa tenia varias lineas de más y se debe a un en el programa

    #include
    #include
    main()
    {int clavea[50],claveb[50],x;
    {char oracion[50];
    printf(“Ingrese una oracion de hasta a 50 caracteres y separadas por guiones bajos \n”);
    scanf(“%s”,oracion);
    for (x=0;x<50;x++)
    {if (oracion[x]=='a'){clavea[x]=1;}
    if (oracion[x]=='b'){clavea[x]=2;}
    if (oracion[x]=='c'){clavea[x]=3;}
    if (oracion[x]=='d'){clavea[x]=4;}
    if (oracion[x]=='e'){clavea[x]=5;}
    if (oracion[x]=='f'){clavea[x]=6;}
    if (oracion[x]=='g'){clavea[x]=7;}
    if (oracion[x]=='h'){clavea[x]=8;}
    if (oracion[x]=='i'){clavea[x]=9;}
    if (oracion[x]=='j'){clavea[x]=10;}
    if (oracion[x]=='k'){clavea[x]=11;}
    if (oracion[x]=='l'){clavea[x]=12;}
    if (oracion[x]=='m'){clavea[x]=13;}
    if (oracion[x]=='n'){clavea[x]=14;}
    if (oracion[x]=='ñ'){clavea[x]=15;}
    if (oracion[x]=='o'){clavea[x]=16;}
    if (oracion[x]=='p'){clavea[x]=17;}
    if (oracion[x]=='q'){clavea[x]=18;}
    if (oracion[x]=='r'){clavea[x]=19;}
    if (oracion[x]=='s'){clavea[x]=20;}
    if (oracion[x]=='t'){clavea[x]=21;}
    if (oracion[x]=='u'){clavea[x]=22;}
    if (oracion[x]=='v'){clavea[x]=23;}
    if (oracion[x]=='w'){clavea[x]=24;}
    if (oracion[x]=='x'){clavea[x]=25;}
    if (oracion[x]=='y'){clavea[x]=26;}
    if (oracion[x]=='z'){clavea[x]=27;}
    if(clavea[x]8){claveb[x]=(clavea[x]/8)+((clavea[x]%8)*10);}
    }
    printf(“Su clave en numeros es “);
    for (x=0;x<27;x++)
    {printf(" %d ",clavea[x]);}
    printf("Su clave en numeros ya encriptados es");
    for (x=0;x<27;x++)
    {printf(" %d ",claveb[x]);}
    system("pause");
    }}

    El cual mi profesor me comento que podia resumir con simplemente hacer un scanf para ver el ascci del caracter ingresado en concreto la pregunta es, ¿como lo hago?, se que necesito guardar el valor de esa letra que seria algo asi NumDeLetrasinencritar=( "%c" Ascii-64,Letra[x])
    ¿Podria ser algo asi?
    {que en caso de la ñ o Ñ seria distinto}
    Desde ya Muchisimas gracias, y suerte.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s