entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Salir del programa cuando pulse intro

Buenos días, estoy realizando un programa en C para la universidad en el que tengo que pasar por terminal una id y una puntuación. Y quiero que cuando pulse intro el programa acabe y muestre todas las ids y sus puntuaciones. Entonces comparo el la primera letra de la id y veo que si es '\n' muestre mi árbol. Pero no funciona. Aquí comparto el código:

int main(){
juga *arbol=NULL;
int puntu;
char ide[8];
do{
    printf("Introduzca una id: ");
    scanf("%s",&ide);
    if(ide[0]!='\n'){
        printf("Introduzca una puntuacion: ");
        scanf("%d",&puntu);
        arbol=ins_juga(arbol,ide,puntu);
    }
}while(ide[0]!='\n');
mostrar(arbol);
return 0;
}

3 Respuestas

1voto

alex_alvarez Puntos2160

Podrías utilizar la instrucións kbhit() que tiene el lenguaje C para detectar que se ha pulsado una tecla, y el getch() para saber si la tecla pulsada es Enter u otra tecla.

Saludos,

1voto

Leonardo-Tadei Puntos227320

Hola iDavid,

no podrás hacer esto usando scanf() para leer la entrada. El código:

scanf("%s",&ide);

hace una lectura en formato string, pero ingresar por teclado solo ENTER no es un string válido, y por tanto hasta que no escribas alguna letra, no pasará a la línea siguiente.

En otras palabras, scanf() no sabe leer solo un ENTER, por lo que después la comprobación:

ide[0]!='\n'

jamás se cumplirá.

Podrías resolverlo leyendo la entrada con getc() o con gets(), ya que ambos sí permiten que la entrada sea una entrada vacía.

Saludos!

1voto

Betosoft Puntos340

He aquí un tip: ¿porqué en vez de comparar si el primer caracter de ide es '\n' no mejor mides la longitud de ide (ya no recuerdo la fución para hacerlo pero debe haber una y si no pues hasta la haces tú) y si la longitud es cero significa que han presionado enter SIN introducir una palabra y entonces puedes romper el ciclo y mostrar los Id que ingresaron?
Espero te funcione!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta