below is my simple code to enter a number and print it. it is inside a while(1) loop so i need to "Enter the number infinite number of time- each time it will print the number and again wait for the input".
#include<stdio.h>
int main()
{
    int i;
    while(1){
        printf("\nenter i \n");
        scanf("%d", &i);
        if(i==1)
        {
            printf("%d \n", i);
        }
    }
    return 0;
}
it was working fine. but suddenly i noticed that IF i ENTER a character(eg: "w") instead of number , from there it won't ask for input!!!** it continuesly prints,
enter i
1
enter i
1
......
when i debug using GDB, i noticed that after i enter "w", that value of character "w" is not stored in &i . before i enter "w" it had 0x00000001 so that "1" is printed through out the process.
- Why it doesn't ask for another input? According to my knowledge, when I enter "w" the ascii value of "w" should be stored in &i. But it doesn't happen. 
- If I put, "int i; " inside - whileloop it works fine! Why?
Please test my code in following way:
- Copy and paste and run it
- When "enter i" prompt will come enter 1
- Second time enter "w". See what happens...
 
     
     
     
     
     
    