Código:EOF en el símbolo del sistema de Windows no termina flujo de entrada
#include <stdio.h>
#define NEWLINE '\n'
#define SPACE ' '
int main(void)
{
int ch;
int count = 0;
while((ch = getchar()) != EOF)
{
if(ch != NEWLINE && ch != SPACE)
count++;
}
printf("There are %d characters input\n" , count);
return 0;
}
Pregunta:
Todo funciona muy bien, ignorará espacios y salto de línea y la salida de la número de caracteres ingresados en la pantalla (en este programa, simplemente trato la coma, el signo de exclamación, los números o cualquier carácter de símbolo especial imprimible como el signo y el carácter) cuando toco la simulación EOF que es
^z
.Pero hay algo mal cuando ingreso esta línea al programa. Por ejemplo, ingresé esto:
abcdefg^z
, lo que significa que ingresé algún carácter antes y en la misma línea que^z
. En lugar de terminar el programa e imprimir el total de caracteres, el programa continuaría solicitando su opinión.La entrada de caracteres de terminación EOF solo funciona cuando especifico
^z
en una sola línea o al hacer esto:^zabvcjdjsjsj
. ¿Por qué está pasando esto?
Entonces, ¿por qué^z no se cuenta como un personaje cuando lo coloco después de una secuencia de caracteres en una línea? Por ejemplo, "abcdefg^z" solo me devuelve "Hay 7 caracteres en el lugar" en lugar de 8 después de ingresar^z después de esa línea. – caramel1995
@ caramel23: Creo que la consola de Windows simplemente lo ignora y no le pasa un carácter al programa que se está ejecutando. No sé por qué sucede esto. –