Uso gcc da terminale.
L'errore di count nel ciclo l'ho capito però, vedendo che il codice di test funziona e avendolo scritto in un modo simile non capisco cosa non gli vada bene. 
Ecco il codice di prova ()
codice:
#include <stdio.h>
#define FLAG 'end'
int
main (void)
{
int data;
printf ("\n\nInsert 0, 1, or exit>");
scanf("%d", &data);
if (data != FLAG){
switch(data){...}
}
printf("logout\n"); }
return 0;
}
Edit: ho fatto una prova e anche solo dandogli 'e' come input anziché l'intero 'end' salta lo switch. C'è un modo per concludere un ciclo senza aumentare il numero di segnaposti nello scanf e senza porre le varie condizioni?