getchar devuelve un EOF al terminar de leer esos char.
¿que es un EOF? Es un entero normalmente negativo pero puede variar de una funcion a otra. Con mis malabras es un algo parecido a return -1;
por si no recuerdas las funciones retornan valores
... y la función getchar() sera algo parecido a eso:
Código C:
Ver original //blablabla aqui hace la magia XD
return -1; //<-eso es el EOF
}
...y solo lo retorna si se ha terminado los datos... ¿como lo hace?Pues mas o menos así:
Código C:
Ver original if( si existe chars ){
return c;
}
else{
return -1;
}
}
Pero en realidad el return lo hará así:
return EOF;
¿Y como lo se? Por que soy Dennis Richards? jajaj es broma
...porque ese valor se puede imprimir. Esta definido dentro de stdio.h y se puede modificar haciendo un #define EOF <otroNumero>.
Te voy enseñar 2 ejemplos, en ambos vamos imprimir el EOF y así ya se te va quitar las dudas :D
El primero ejemplo va imprimir el EOF por defecto, y el segundo va imprimir un EOF modificado por nosotros. En ambos casos lo que quiero demostrar es el valor que tiene.
Es como la constante PI que esta definida dentro de la librería math.h, se puede cambiar, por que por ejemplo PI viene definida asi: PI == 3.141231241542543523634254124º11º3º131º1 XDDDDDDDDDDD.......
Y que pasa si no lo quiero tannn largo... pues que hago un #define PI 3.14 y ya ta XD
Aquí va el primer XD
Código C:
Ver original#include <stdio.h> // printf()
int main(void){
return 0;
}
como puedes ver es -1 creo XD (puede variar de un compilador a otro, yo uso mingw)
El otro ejemplo modificamos el EOF para que sea 10 enves de -1 pero recuerda que 10 ya existe en la tabla asc2 y por eso se usan negativos... porque no hay valores negativos en dicha tabla, pero me da igual por que no voy usar ese EOF para nada XD.
Código C:
Ver original#include <stdio.h> // printf()
#define EOF 10
int main(void){
return 0;
}
Bueno pues como puedes ver el EOF es simplemente es una marca que indica que ya no hay mas letras y es cuando rompe tu bucle, y cada función puede dejar una marca distinta. Lo que se intenta es que sea un entero ya que si fuera un char y padentro... XD
Por eso EOF es un entero y no un char.
Ahora volviendo a tu programa... tu bucle no se rompe mientras getchar no arroje el EOF (-1) que es esto while ( getchar() != EOF) o lo que es lo mismo while (getchar() != -1)
Prueba lo :D
Si me liado en algo no me peguéis
, es solo corregidme y aprenderé también
Espero que sirva para la duda
y ¡Suerte!