C Loop termination question

Posted on 2001-07-25
Last Modified: 2010-04-15
Can someone please reccommend a good way to terminate the following loop when the user hits enter twice?  Currently the only way to exit is to user ctrl+d.

#include <stdio.h>
#include <ctype.h>

#define YES 1
#define NO  0

int main(void)

Variable Declarations

char string[101];
int c,
countChars = 0,
countLines = 0,
countTokens = 1,
countUpper = 0,
countLower = 0,
countDigits = 0,
countOther = 0,
charsPerLine = 0,
countBreak = 0;

printf("Counts the number of characters, lines and words\n");

Start of infinite while loop

while ((c = getchar()) != EOF){

Get the character from std input and perform character count


Check for now lines and increment the line counter and reset
the charsPerLine variable

  if (c == '\n'){
   charsPerLine = 0;

Verify that chars per line does note excede 100

  if ( charsPerLine > 100){
   printf("ERROR - The maximum number of chars per line is 100\n\n");

Verify that chars per line does note excede 100

  if (countLines > 100){
   printf("ERROR - The Total number of lines cannot excede 100\n\n");

Calculate the number of tokens

  if (c == ' ' || c == '\n' || c == '\t'){
   newToken = YES;
    if (newToken == YES){
     newToken = NO;

Calculate the number of lower and upper case characters

 if ((isupper(c)) != 0)
 else if ((islower(c)) != 0)

Calculate the number of digits

 if ((isdigit(c)) != 0)

Calculate the number of special chracters

 if ((isdigit(c)) == 0 && (isalpha(c)) == 0)

end of while loop

printf("\n You entered %c %s and %d\n", c, string, strlen(string));
if ((c == '\n') && (strlen(string) == 0))
c = 026;

Print the Output

printf("Number of lines = %d\n", countLines);
printf("Number of tokens = %d\n", countTokens);
printf("Number of chars = %d\n", countChars);
printf("Number of upper-case chars = %d\n", countUpper);
printf("Number of lower-case chars = %d\n", countLower);
printf("Number of digits = %d\n", countDigits);
printf("Number of chars other than chars and digits = %d\n", countOther);
return (0);

end of main

Question by:Dargie
1 Comment

Accepted Solution

newmang earned 30 total points
Comment Utility
Why not store the last character read in a variable and then when a new character is read check to see if both the new character and the last character are both newlines. If so then break; the loop. Something like this perhaps....

char lastchar=0x00;
while ((c = getchar()) != EOF){

if(c=='\n' && lastchar=='\n')

Cheers - Gavin

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

This tutorial is posted by Aaron Wojnowski, administrator at  To view more iPhone tutorials, visit This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode ( They will have you believe that Unicode requires you to use…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use nested-loops in the C programming language.
The goal of this video is to provide viewers with basic examples to understand how to create, access, and change arrays in the C programming language.

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now