Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: etcheverrypablol en 2 Febrero 2016, 07:56 am



Título: cómo comparar una variable caracter con un código ascii en C
Publicado por: etcheverrypablol en 2 Febrero 2016, 07:56 am
Hola gente.

Tengo que resolver el siguiente problema:

"Determinar si el carácter asociado a un código introsucido por teclado corresponde a un carácter alfabético, dígito, de puntuación, especial o no imprimible".

Para ello, lo que quiero hacer es comparar la variable donde se almacena el caracter introducido con un cierto rango de caracteres expresados en código ascii, pero no encuentro cómo.

En pascal, si no mal recuerdo, se hace uso del símobolo #, pero en C nosé.

Algunos puede aportar algo para resolver este dilema? jaja

Desde ya gracias!



Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: MAFUS en 2 Febrero 2016, 09:37 am
Mira las funciones de la libreria ctype, está todo lo que buscas.


Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: fary en 2 Febrero 2016, 10:19 am
Puedes programar tu mismo la funcion. Ya sabes que cada carácter equivale a un número del 0 al 255.

Saludos.


Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: MAFUS en 2 Febrero 2016, 11:15 am
Soy de la opinión de que reinventar la rueda es un mal hábito.  Las librerías estándar suelen estar lo más optimizadas y libres de errores posible.


Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: ivancea96 en 2 Febrero 2016, 19:28 pm
Soy de la opinión de que reinventar la rueda es un mal hábito.  Las librerías estándar suelen estar lo más optimizadas y libres de errores posible.

Sin duda, importante a la hora de programar proyectos serios, pero no a la hora de aprender lenguajes.


Luego, etchevarrypablol, ten en cuenta que un caracter en C, es un dato numérico, sea cual sea la forma mediante la cual, funciones como printf lo muetran en consola. Siendo así, la forma de conocer si un valor está en un rango:
Código
  1. char c = 'k';
  2. if('a'<=c && c<='z') ...

Bueno, ten en cuenta que 'a' es un caracter, y "a" es una cadena, por si acaso.


Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: furciorifa en 3 Febrero 2016, 05:05 am
Estoy de acuerdo que reinventar la rueda es malo, pero también ayuda mucho a saber cómo funcionan las cosas en cualquier lenguaje.


Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: etcheverrypablol en 5 Febrero 2016, 10:14 am
Hola chicos, disculpen la demora en responder.

Mafus, se que puede haber una librería, pero en mi caso, yo quiero hacer la función. En ese sentido, se que cada caracter se asocia con un número del 0 al 255, pero no sé como expresarlo en el código.



fary, cómo hago para comparar la variable caracter con un rango de caracteres expresados en el cógio ascii sabiendo qué se asocian con esos números.

ivancea96, sé que se puede hacer de esa forma, pero no es la que busco.

Debería ser algo así:
 if(var>#70 && var<#90)
{
   puts("El cacarter es tal cosa");
}


Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: fary en 5 Febrero 2016, 10:28 am
Seguro que mirando la tabla ascii lo consigues hacer. Son solo unas comparaciones con if...

(https://itiem1.files.wordpress.com/2010/10/codigo-ascii.jpg)


Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: etcheverrypablol en 5 Febrero 2016, 10:35 am
Es que no puedo poner
  if(78){
     puts("El caracter es una N");
  }
Lo que preciso saber es qué se ponde adentro de esa condicion, seguro que es algo muy simple, como anteponer un símbolo delante del número que hace referencia al código ascii.

Supongo eso, porque en otros lenguajes como en pascal se hace eso, aunque soy conciente que en C puede ser totalmente distinto.



Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: fary en 5 Febrero 2016, 10:59 am
Es que no puedo poner
  if(78){
     puts("El caracter es una N");
  }
Lo que preciso saber es qué se ponde adentro de esa condicion, seguro que es algo muy simple, como anteponer un símbolo delante del número que hace referencia al código ascii.

Supongo eso, porque en otros lenguajes como en pascal se hace eso, aunque soy conciente que en C puede ser totalmente distinto.

Yo necesito saber como hacer una consulta en SQL, pero si no me pongo a leer nada de SQL, ¿Cómo lo espero hacer?.

Ta pasa lo mismo pero en C, si no sabes hacer una simple comparación con un if, ¿Qué sabes de C?

Código
  1. char c = 78;
  2.  
  3. if (c == 78)
  4. {
  5.    printf("Si, es una N");
  6. }
  7.  


Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: etcheverrypablol en 5 Febrero 2016, 11:28 am
Bueno, luego de un poco de mal entendidos, encontré lo que buscaba! :-)

Lo que aprendí es que un caracter expresado en código ascci es SÓLAMENTE un número. Así, si a una variable, por ejemplo, car, le quiero asignar la letra N, lo puedo hacer de estas dos formas:

char car='N';
char car=78;

donde 78 es la N expresado en el código ascci. Esa era mi duda.
Ahora bien, si yo quiero hacer un programa que dado un caracter me diga si el mismo es una letra o no, podría ser este:

#include <stdio.h>

int main(){
   char car;
   
   puts("Ingrese un caracter: ");
   scanf("%c",&car);
   
   if((car>=65 && car<=90) || (car>=97 && car<=122))
      puts("El caracter es una letra.");
   else
      puts("El caracter no es una letra");
   return 0;
}

Desde ya muchas gracias a todos por su tiempo y expliaciones.

fary, en el comentaro anterior mío, me había confundido en la condición del if. Debería haber puesto yo:
  if(car=78){
  puts("El caracter es una N")
}
Cabe destacar, que yo no me esperaba que el 78 en ese caso podía representar por sí una letra (le letra N), ya que, como aclaré antes, pensé que tenía que anteponerle algún símbolo. Fue una coincidencia jaja


Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: Eternal Idol en 5 Febrero 2016, 11:54 am
 if(car=78){

Eso tambien esta mal, = asigna, == compara.


Título: Re: cómo comparar una variable caracter con un código ascii en C
Publicado por: etcheverrypablol en 5 Febrero 2016, 11:57 am
TIenes razón, se me pasó por alto jejeje. Gracias por la aclaración :)