Go Premium for a chance to win a PS4. Enter to Win


C Loop termination question

Posted on 2001-07-25
Medium Priority
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 120 total points
ID: 6320264
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


Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

An Outlet in Cocoa is a persistent reference to a GUI control; it connects a property (a variable) to a control.  For example, it is common to create an Outlet for the text field GUI control and change the text that appears in this field via that Ou…
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 (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
The goal of this video is to provide viewers with basic examples to understand and use structures in the C programming language.
The goal of this video is to provide viewers with basic examples to understand opening and reading files in the C programming language.

824 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