Trabalho de C

Estou fazendo meu trabalho final de programação da faculdade e um problema me tira o sono.
Quando eu executo esse main() ele faz tudo direitinho, mas quando eu termino uma das opções que é pra mostrar o menu de novo, o menu aparece duas vezes. Já tentei while, do while e esse for, maso menu aparece duas vezes. Alguém pode me dizer o que tá errado??

[code]int main() {

Cliente c;
char opcao = '0';

rewind(stdin);
for(;;){
	printf("\n\tDigite a opção desejada\n"
			"1. Inserir\t"
			"2. Listar\t"
			"3. Sair\n");
	scanf("%c", &opcao);
	switch(opcao){
		case '1':
			inserir();
			break;
		case '2':
			listar(c);
			break;
		case '3':
			exit(0);
	}
}

}
[/code]

Eu não programo muito em C, mas acho q colocando o fflush(stdin) depois do scanf("%c", &opcao); funcionaria, ja vi em alguns artigos na net q o fflush(stdin) não eh uma solução ideal, mas q acho q para o seu caso pararia de mostrar o menu duas vezes

//…
scanf("%c", &opcao);
fflush(stdin);
switch(opcao){
//…