% c nie pominie białymi char jako liczbowe formatu Specyfikatory zrobić. Więc jeśli używasz:
#include<stdio.h>
int main(int argc, char* argv[]){
char c;
scanf("%c", &c);
printf("%c\n", c);
scanf("%c", &c); // Try running with and without space
printf("%c\n", c);
return 0;
}
Jest bardzo prawdopodobne, że poprzedni biały znak w buforze wejściowym zostaną podjęte w drugim scanf, a nie dostaniesz szansę na typ. Spacja przed% c spowoduje, że scanf pominie w buforze wejściowym dowolny znak odstępu, abyś mógł poprawnie wprowadzić swoje dane wejściowe. Czasami, aby uzyskać ten sam efekt piszą:
fflush(stdin);
scanf("%c" &c);
Ale to jest uważane za bardzo złe programowania jak C standard określa zachowanie fflush (stdin) jest niezdefiniowane. Dlatego zawsze używaj spacji w łańcuchu formatu, chyba że masz konkretny powód, aby dobrze uchwycić białe znaki.
http://linux.die.net/man/3/scanf, http://www.manpagez.com/man/3/scanf/, http://unixhelp.ed.ac.uk/CGI/ man-cgi? scanf + 3, GIYF – sehe