Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Detectorup en 18 Diciembre 2018, 10:08 am



Título: Detectar ENTER pero como tipo entero y no Char
Publicado por: Detectorup en 18 Diciembre 2018, 10:08 am
DEseo que al ingresar un numero edad, me detecte si pulse ENTER como numero entero para salir del programa
yo se que ENTER = '\n' pero se compara con variables tipo char y lo que yo uso es variable entera .

Como haria
ya proble con scanf, getchar(), fgets() todos tratan a ENTER como char , pero no puedo usarlo ya uqe usare desigualdades con
numeros enteros al ingresar el numero edad



#include <stdio.h>
#include <math.h>
#include <conio.h>

int main()
{

int edad;
printf("INGRESAR TU EDAD (entero mayor que cero) : \n");
scanf("%d",&edad);
fflush(stdin);

if ( edad<18)
printf("No puedes votar eres menor de edad\n");
else if ( edad >=18)
printf(" Si puedes Votar , eres mayor de edad 18\n");
else ( edad = '\n')
printf(" Pulsaste ENTER , saliendo ..\n");
system("pause");
return 0;
}


Título: Re: Detectar ENTER pero como tipo entero y no Char
Publicado por: MAFUS en 18 Diciembre 2018, 10:28 am
Los carácter es, internamente, son valores enteros. Por ejemplo: el '\n' es un 10 en decimal.
A menos que quieras excluir todas las edades de 10 años deberás encontrar otra forma de hacerlo.

La tabla ASCII te indicará el valor de cada carácter.

Veo que te han enseñado C sin enseñarte cómo funciona la memoria. Una lástima porque C está muy ligado a la memoria.


Título: Re: Detectar ENTER pero como tipo entero y no Char
Publicado por: Detectorup en 18 Diciembre 2018, 10:44 am
estoy comenzando full autodidacta con C , lo que no entiendo algo tan simple se me ha complicado.

ingresar un valor entero  y segun en que intervalo caiga   dara mensajes, pero si Ingresas ENTER debes salir del programa.  parecia simple pero con los ya conocidos getchar(), scanf, fgets(), no me sirve porque esos usan tipo char ..




Título: Re: Detectar ENTER pero como tipo entero y no Char
Publicado por: CalgaryCorpus en 18 Diciembre 2018, 11:25 am
No leas como int
 Lee un string siempre, conviertelo a int después usando atoi() o similar.


Título: Re: Detectar ENTER pero como tipo entero y no Char
Publicado por: MAFUS en 18 Diciembre 2018, 16:15 pm
scanf, cómo muchas de las funciones de la librería, devuelve un valor. En este caso este valor indica cuántas conversiones correctas ha realizado.

Si a la hora de capturar un número no lo ha conseguido (ya porque había letras o has pulsado return sin dar un número) devolverá un 0 (si sólo ibas a capturar un dato).

Código
  1. retorno = scanf("%d", &edad);
  2.  
  3. if(retorno == 0) {
  4.    puts("El dato introducido no es un entero");
  5.    return -1;
  6. }
  7.  
  8. printf("Tu edad es de %d\n", edad);