Ciao a tutti ho un problema con argv

mettendo il caso che io scrivo questo comando:

avvio -i

Il programma esegue la procedura inserisci e poi anche le altre.. come mai???

Le procedure sono inserite tramite esterni.h

Allego il codice

codice:
#include "../../Src/Lib/mystdio.h"
#include "esterni.h"

main (int argc, char *argv[])
{
 int c;

	if ((argc < 2) || (argc >= 3))
		printf ("Comando errato --> gestiscivettore + opzione [-i] [-m] [-c]  --> inserisci - modifica - cancella \n");
	else
		{

	        while (--argc > 0 && (*++argv)[0] == '-')
			
		  while (c = *argv[0])

		  switch (c)
		  {
	             case 'i': :
			     Inserisci();
		     case 'm' :
			     Modifica();
	             default : printf ("Comando non valido");
	          }

               }
}