Newb Question: scanf() in C
        Posted  
        
            by riemannliness
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by riemannliness
        
        
        
        Published on 2010-06-11T02:59:37Z
        Indexed on 
            2010/06/11
            3:02 UTC
        
        
        Read the original article
        Hit count: 338
        
So I started learning C today, and as an exercise i was told to write a program that asks the user for numbers until they type a 0, then adds the even ones and the odd ones together. Here is is (don't laugh at my bad style):
#include <stdio.h>;
int main() {
    int esum = 0, osum = 0;
    int n, mod;
    puts("Please enter some numbers, 0 to terminate:");
    scanf("%d", &n);
    while (n != 0) {
        mod = n % 2;
        switch(mod) {
        case 0:
            esum += n;
            break;
        case 1:
            osum += n;
        }
        scanf("%d", &n);
    }
    printf("The sum of evens:%d,\t The sum of odds:%d", esum, osum);
    return 0;
}
My question concerns the mechanics of the scanf() function. It seems that when you enter several numbers at once separated by spaces (eg. 1 22 34 2 8), the scanf() function somehow remembers each distinct numbers in the line, and steps through the while loop for each one respectively. Why/how does this happen?
Example interaction within command prompt:
-> Please enter some numbers, 0 to terminate:
42 8 77 23 11 (enter)
0 (enter)
-> The sum of evens:50,     The sum of odds:111
I'm running the program through the command prompt, it's compiled for win32 platforms with visual studio.
© Stack Overflow or respective owner