I have this block of code (functions omitted as the logic is part of a homework assignment):
#include <stdio.h>
int main()
{
    char c = 'q';
    int size; 
    printf("\nShape (l/s/t):");
    scanf("%c",&c);
    printf("Length:"); 
    scanf("%d",&size);
    while(c!='q')
    {
        switch(c)
        {
            case 'l': line(size); break; 
            case 's': square(size); break;
            case 't': triangle(size); break; 
        }
        printf("\nShape (l/s/t):");
        scanf("%c",&c);
        printf("\nLength:"); 
        scanf("%d",&size);
    }
    return 0; 
}
The first two Scanf's work great, no problem once we get into the while loop, I have a problem where, when you are supposed to be prompted to enter a new shape char, it instead jumps down to the printf of Length and waits to take input from there for a char, then later a decimal on the next iteration of the loop. 
Preloop iteration:
Scanf: Shape. Works Great
Scanf: Length. No Problem 
Loop 1.
Scanf: Shape. Skips over this
Scanf: length. Problem, this scanf maps to the shape char.
Loop 2
Scanf: Shape. Skips over this
Scanf: length. Problem, this scanf maps to the size int now. 
Why is it doing this?
 
     
     
     
     
     
     
     
     
     
    