How to simulate an EOF?

CEofGetcharKernighan and-Ritchie

C Problem Overview


I am currently reading K&R's book and typing in the examples from the first section, and there are a couple of examples such as this:

while((c = getchar()) != EOF) {
    //do something
}

I am testing these examples on a Windows box and thus running the compiled exe files from the cmd prompt.

To test the example above, how do I simulate an EOF? That is, basically how can I make the loop stop when testing the example from the command prompt?

C Solutions


Solution 1 - C

To enter an EOF, use:

  1. ^Z (CtrlZ) in Windows
  2. ^D on Unix-like systems

Solution 2 - C

Refer EOF

Windows: Ctrl+Z
Unix :Ctrl+D

Solution 3 - C

First, press: Ctrl^X, next: Ctrl^D

Solution 4 - C

You can also simulate EOF by explicitly giving int variable a value of -1.

Check out this code for more clarity:

#include<stdio.h>

int main() {    
    // char ch=getchar()
    // int ch=-1;

    if(ch==EOF) { printf("\nEOF: %d",EOF); }
    if((ch!=EOF)==0) { printf("\nit is equal to 0"); }
    if((ch!=EOF)==1) { printf("\nit is equal to 1"); }
    else { printf("\n it is equal to other value"); }
    system("pause");
    return 0;
}

Solution 5 - C

I had the same problem after pressing Ctrl+d program stopped and returned 0. If you use Clion press Ctrl+Shift+a than type Registry press enter and make sure run.processes.with.pty. is unchecked. After that compile program again and then you can type in input but don't press Ctrl+d on the same line as input it will return 0 or Error.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAndreas GrechView Question on Stackoverflow
Solution 1 - CGreg HewgillView Answer on Stackoverflow
Solution 2 - CaJ.View Answer on Stackoverflow
Solution 3 - Cuser3078185View Answer on Stackoverflow
Solution 4 - Cuser1616974View Answer on Stackoverflow
Solution 5 - CToffy_View Answer on Stackoverflow