]Si sono consapevole della mia tabulazione ma è stato un errore di copiatura, come ho mezzo risolto usando un do do/while, ma mi sono accorto che nel caso 5 non riesco a far eliminare il contatto.
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<process.h>
#include<stdlib.h>
#include<dos.h>
struct contact //struttura contact list
{
	long ph;
	char name[20],add[20],email[30];
}list;
char query[20],name[20];
FILE *fp, *ft;
int i,n,ch,l,found;
int main()
{
int i,n,ch,l,found;
do{
	system("cls");    //pulisco tutto e ristampo dopo
	printf("\n\t ***** Benvenuto nella Rubrica *****");
	printf("\n\n\n\t\tMenu principale\n\t\t=====================\n\t\t[1] Nuovo contatto\n\t\t[2] Lista contatti\n\t\t[3] Search for contact\n\t\t[4] Modifica contatto\n\t\t[5] Cancella contatto\n\t\t[0] Esci\n\t\t=================\n\t\t");
	
	printf("Seleziona una scelta:");
	scanf("%d",&ch);
	
	switch(ch)
	{
		case 0:
		printf("\n\n\t\tSei sicuro di voler uscire?");
		break;
		
		
		/* *********************Nuovo contatto************  */
		case 1:
		system("cls");
		fp=fopen("contact.dll","a");
		for (;;)
		{ 
			fflush(stdin);
			printf("Nome:");
			scanf("%[^\n]",&list.name);
			if(stricmp(list.name,"")==0 || stricmp(list.name," ")==0)
			break;
			fflush(stdin);
			printf("Numero:");
			scanf("%ld",&list.ph);
			fflush(stdin);
			printf("Indirizzo:");
			scanf("%[^\n]",&list.add);
			fflush(stdin);
			printf("email:");
			fgets(list.email,30,stdin);
			printf("\n");
		}
		fwrite(&list,sizeof(list),1,fp);
		break;
		
		
		/* *********************lista dei contatti*************************  */
		case 2:
		system("cls");
		printf("\n\t\t================================\n\t\t\tLISTA DEI CONTATTI\n\t\t================================\n\nNome\t\tNumero\tIndirizzo\t\tE-mail ad.\n=================================================================\n\n");
		
		for(i=97;i<=122;i=i+1)
		{
			fp=fopen("contact.dll","r");
			fflush(stdin);
			found=0;
			while(fread(&list,sizeof(list),1,fp)==1)
			{
				if(list.name[0]==i || list.name[0]==i-32)
				{
					printf("\nNome\t: %s\nNumero\t: %ld\nIndirizzo\t: %s\nEmail\t: %s\n",list.name,
					list.ph,list.add,list.email);
					found++;
				}
			}
			if(found!=0)
			{
			    printf("=========================================================== [%c]-(%d)\n\n",i-32,found);
			    getch();
			
			}
			fclose(fp);
		}
		
		break;
		
		
		
		/* *******************cerco i contatti**********************  */ // magari lo tolgo
		case 3:
		system("cls");
		do
		{
			found=0;
			printf("\n\n\t..::CERCA CONTATTI\n\t===========================\n\t..::Nome dei contatti che vuoi cercare: ");
			fflush(stdin);
			scanf("%[^\n]",&query);
			l=strlen(query);
			fp=fopen("contact.dll","r");
			
			system("cls");
			printf("\n\n..::Risulato di '%s' \n===================================================\n",query);
			while(fread(&list,sizeof(list),1,fp)==1)
			{
				for(i=0;i<=l;i++)
				name[i]=list.name[i];
				name[l]='\0';
				if(stricmp(name,query)==0)
				{
					printf("\n..::Nome\t: %s\n..::Numero\t: %ld\n..::Indirizzo\t: %s\n..::Email\t:%s\n",list.name,list.ph,list.add,list.email);
					found++;
					if (found%4==0)
					{
						printf("..::Permi invio per continuare...");
						getch();
					}
				}
			}
			
			if(found==0)
			{
				printf("\n..::Nessun contatto/i trovato/i!");
			}else
			{
				printf("\n..::%d contatto/i trovato/i!",found);
				fclose(fp);
				printf("\n ..::Cerca di nuovo\n\n\t[1] Yes\t\t[0] No\n\t");
				scanf("%d",&ch);		
			}
		
		}while(ch==1);
		break;
		
		
		/* *********************modifica contatti************************/
		case 4:
		system("cls");
		fp=fopen("contact.dll","r");
		ft=fopen("temp.dat","w");
		fflush(stdin);
		printf("..::Modifica contatto\n===============================\n\n\t..::Digita il nome del contatto che vuoi modificare:");
		scanf("%[^\n]",name);
		while(fread(&list,sizeof(list),1,fp)==1)
		{
			if(stricmp(name,list.name)!=0)
			{
				fwrite(&list,sizeof(list),1,ft);	
			}
		}
		fflush(stdin);
		printf("\n\n..::Editing '%s'\n\n",name);
		printf("..::Nome:");
		scanf("%[^\n]",&list.name);
		fflush(stdin);
		printf("..::Numero:");
		scanf("%ld",&list.ph);
		fflush(stdin);
		printf("..::Indirizzo:");
		scanf("%[^\n]",&list.add);
		fflush(stdin);
		printf("..::email:");
		fgets(list.email,30,stdin);
		printf("\n");
		fwrite(&list,sizeof(list),1,ft);
		fclose(fp);
		fclose(ft);
		remove("contact.dll");
		rename("temp.dat","contact.dll");
		break;
		
		
		
		
		/* ********************cancello**********************/
		case 5:
		system("cls");
		fflush(stdin);
		printf("\n\n\t..::ELIMINA CONTATTO\n\t==========================\n\t..::Digita il nome del contatto che vuoi eliminare:");
		scanf("%[^\n]",&name);
		fp=fopen("contact.dll","r");
		ft=fopen("temp.dat","w");
		while(fread(&list,sizeof(list),1,fp)!=0)
		if (stricmp(name,list.name)!=0)
		{
			fwrite(&list,sizeof(list),1,ft);
			fclose(fp);
			fclose(ft);
			remove("contact.dll");
			rename("temp.dat","contact.dll");	
		}
		break;
		
		default:
		printf("Scelta non valida");
		break;
	}
}while (ch != 5);
return 0;
}