title: fgets and dealing with CTRL+D input
body: <p>I am grabbing some standard input from the user and if the user presses <kbd>CTRL+D</kbd>, I want to display an error and terminate the program. I think perhaps my issue may be related to being stuck in a while loop;</p>
  
  <pre><code>int readInput(){
     char buff[10];
     int count = 0;
     int counter;
     printf("Enter random number: ");
     fgets(buff, 10, stdin);
     if ((int) strtol(buff, NULL, 10) == 0){
        printf("Error reading number. \n");
        return 0;   //This will get hit if the user presses CTRL+D at this input.
     }
     counter = atol(buff);
     while (count &lt; counter){ 
        printf("Enter a label: ");
        fgets(buff, 10, stdin);
        if ((int) strtol(buff, NULL, 10) == 0){
           printf("Error reading label");
           return 0;  //This will not get hit if the user presses CTRL+D at this input, but why?
           //I've also tried assigning a variable to 0, breaking out of the loop using break; and returning the variable at the end of the function but that also does not work.
  
        //the rest of the while loop continues even if user hit CTRL+D
        printf("Enter Value: " );
        fgets(buff, 10, stdin);
        //..rest of while loop just gets other inputs like above
        count++;
     }
  
  //termination happens in main, if readInput returns a 0 we call RETURN EXIT_FAILURE;
  </code></pre>
  
  <p>I don't understand why at the first input if the user presses <kbd>CTRL+D</kbd>, the program responds accordingly but the second time it completely ignores it.</p>