[ Foro de C ]

EOF y getchar

29-Jun-2017 06:49
Invitado (rLS)
1 Respuestas

Hola. Estoy asimilando el apartado getchar, su problemática con el buffer y la existencia de la constante EOF.
Si no he entendido mal: cada carácter que no absorban un scanf  o un getchar, irá a parar al buffer. Esto quiere decir que si escribo una instrucción donde se me pide un sólo carácter e introduzco, por ejemplo "abc", 'a' se almacenaría correctamente pero 'b','c' y el enter quedarían en el buffer en ese mismo orden. Por tanto debiera escribir getchar() hasta tres veces para vaciarlo. Espero no haber malinterpretado nada.
Aquí es cuando he leído la descripción de EOF y queriendo poner en práctica lo aprendido he trasteado con un bucle para limpiar el buffer sin ayudarme de fflush. Para ello he escrito:

 
/* El programa pide dos letras y las muestra en pantalla*/
int main(){
char letra1, letra2, buffer; 
printf("Introduce una letra:\n");
letra1=getchar();
buffer=getchar();            /*para comprobar si existe algún dato en el buffer*/
while(buffer!='\n') buffer=getchar();              /*bucle de limpieza*/
printf("Introduce otra letra:\n");
letra2=getchar();
printf("Las letras introducidas son %c%c",letra1,letra2);
return 0;
}
 


Tal y como está parece funcionar. El proglema es que mi intención original pasaba por emplear EOF y había intentado:
while(buffer!=EOF) buffer=getchar();
El programa compila pero se queda en suspensión. Mi duda es dónde meto la pata, cómo le puedo sacar partido a EOF.

Gracias.


11-Aug-2017 21:55
Nacho Cabanes (+32)

Un final de línea y un final de fichero son cosas distintas. Desde consola, en modo interactivo, no llegarás nunca a recibir un EOF.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)