Detectar ENTER pero como tipo entero y no Char

Iniciado por Detectorup, 18 Diciembre 2018, 10:08 AM

0 Miembros y 1 Visitante están viendo este tema.

Detectorup

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;
}

MAFUS

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.

Detectorup

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 ..



CalgaryCorpus

No leas como int
Lee un string siempre, conviertelo a int después usando atoi() o similar.
Aqui mi perfil en LinkedIn, invitame un cafe aqui

MAFUS

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).


retorno = scanf("%d", &edad);

if(retorno == 0) {
    puts("El dato introducido no es un entero");
    return -1;
}

printf("Tu edad es de %d\n", edad);