scanf
оставляет пробел во входном буфере, включая символы новой строки. Чтобы использовать fgets для чтения следующей строки, вам нужно вручную удалить оставшуюся часть текущей строки:
int c;
do{
c = getchar();
}while(c != EOF && c != '\n');
Для этого есть расширение, но у меня еще нет опыта использования :
http://ipython.scipy.org/ipython/ipython/attachment/ticket/154/ipy_autoreload.py