I have trouble understanding getchar() and EOF.
I was trying to run this code:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    char c;
    int a = 0; //no. of characters
    while (1) {
        c = getchar();
        if (c == EOF) {
            // printf("%i",c); 
            break;
        }
        putchar(c);
        ++a;
    }
    printf("%i", a);
    int b;
    while ((b = getchar()) != EOF) {
        putchar(b);
    }
    printf("here"); // to check wether the code written after the loop is executed
}
I terminated the first loop by pressing Ctrl-D twice, I found many posts explaining the reason for this. But whenever I try to call the getchar() function after the first loop it keeps returning EOF, even though that would have been already read by the last call in the first loop.
Code editor - VSCode
OS - macOS
 
     
    