#include <stdio.h>
int main(void) {
    char c = 'y', temp;
    printf("Press y\n");
    do {
        printf("Press y to continue\n"); // read y again and again
        scanf("%c", &c); // y entered
        printf("%c", c); // loop should repeat but doesn't repeat
    } while(c == 'y');
}
            Asked
            
        
        
            Active
            
        
            Viewed 178 times
        
    0
            
            
         
    
    
        ajay
        
- 9,402
- 8
- 44
- 71
 
    
    
        Anish Gupta
        
- 293
- 1
- 5
- 18
- 
                    Did you account for the fact that `stdin` is line buffered and the newline character will be rejected in the next iteration? – Sergey L. Feb 10 '14 at 17:15
- 
                    This is guaranteed to be a duplicate. – alk Feb 10 '14 at 17:18
2 Answers
4
            It will not. Because scanf reads the \n character on second iteration which cause the loop to terminate. Place a space before %cto consume this \n character left behind by previous scanf.  
 scanf(" %c",&c);
 
    
    
        haccks
        
- 104,019
- 25
- 176
- 264
2
            
            
        Try adding a space before %c which is a scanf quirk. The space absorbs the newline char after typing the 'y'.
        scanf(" %c",&c);
 
    
    
        suspectus
        
- 16,548
- 8
- 49
- 57