¿Por qué Ctrl + Z no activa el ciclo para terminar en el siguiente programa pequeño?
#include <stdio.h> main() { int c; while ((c = getchar()) != EOF) { //nothing } return 0; }
Si ingreso: test^ZEnter
, no sale del bucle.
Encontré preguntas relacionadas ( aquí y aquí ) pero ninguna para explicarlo para C (no C ++) en Windows.
Nota : uso Visual Studio 2015 PRE en Windows 8.1
Debe presionar Enter y luego usar ctrl + Z y luego Enter nuevamente.
o también puede usar F6
EOF
como lo usas no es un personaje. Es el estado en el que se encuentra ese stream.
Quiero decir, diablos, incluso vinculas esta pregunta, por lo que también podrías leer la respuesta aceptada :
La forma subyacente de un EOF es una lectura de longitud cero.
No es un "personaje EOF".
http://www.c-faq.com/stdio/getcharc.html cita un caso diferente al suyo, donde alguien almacenó el valor de retorno de getchar
en un char
. El problema subyacente todavía ocurre ocasionalmente: diferentes tiempos de ejecución implementan diferentes valores para el entero EOF
(por eso dije, no es un carácter EOF), y las cosas aman salir mal. Especialmente en Visual C++, que no es un compilador de C "real" sino un compilador de C++ con un modo de compatibilidad, parece que las cosas pueden salir mal.