Witam! W programowaniu jestem na etapie noworodka, ale staram się zwiększać swoją wiedzę. Podczas robienia bazy danych, przy wpisywaniu imienia zawsze mi przerywa program, wyskakuje break i nic sie nie da zrobić. Próbowałem robić różnymi sposobami tą baze danych, ale nie moge dojść po prostu do tego, co mam źle. Prosiłbym Was o pomoc w nakierowaniu mnie na błąd.
Tą bazę robiłem na wzór jakieś z zagraniczego forum. Nie wyglada to ładnie, musze jeszcze uporządkować, a także pozmieniać w printach bo robiłem tylko to, żeby sprawdzić czy działa. Z góry, dziękuje o pomoc!

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

struct contact
{
	long num;
	char firstName[20], secondName[20];
}list;
char query[20], name[20];
FILE *fp, *ft;
int i,n,ch,l,found;
void add()
{
	fp=fopen("kontakty.txt","a");
	for(;;)
	{
		fflush(stdin);
		printf("Podaj imie: ");
		scanf_s("%s", &list.firstName);
		printf("Podaj nazwisko: ");
		scanf_s("%s", &list.secondName);
		printf("Podaj numer: ");
		scanf_s("%ld", &list.num);
		fwrite(&list,sizeof(list),1,fp);
	}
	fclose(fp);
}

void show()
{
	system("cls");
		printf("Kontakty");
		for(i=97;i<=122;i=i+1)
		{
			fp=fopen("kontakty.txt", "r");
			fflush(stdin);
			found=0;
			while(fread(&list,sizeof(list),1,fp)==1)
			{
				if (list.firstName[0]==1 || list.firstName[0]==i-32)
				{
					printf("Name: %s %s Phone: %ld", list.firstName, list.secondName,list.num);
					found ++;
				}
			}
			if (found!=0)
			{
				  printf("=========================================================== [%c]-(%d)\n\n",i-32,found);
                getchar();
			}
			fclose(fp);
		}
}

void edit()
{
	fp=fopen("kontakty.txt","r");
	ft=fopen("temp.dat","w");
	fflush(stdin);
	printf("Podaj imie kontaktu do edycji: ");
	scanf_s("%[^\n]", name);
	while (fread(&list,sizeof(list),1,fp)==1)
	{
		if(strcmp(name,list.firstName)!=0)
			fwrite(&list, sizeof(list),1,ft);
	}
	fflush(stdin);
	printf("Edytuje %s", name);
	printf("Imie:(uzyj identycznego: ");
	scanf_s("%[^\n]", &list.firstName);
	fflush(stdin);
	printf("Nazwisko: ");
	scanf_s("%s", &list.secondName);
	fflush(stdin);
	printf("Telefon: ");
	scanf_s("%ld", &list.num);
	fflush(stdin);
	fwrite(&list,sizeof(list),1,ft);
	fclose(fp);
	fclose(ft);
	remove("kontakty.txt");
	rename("temp.dat", "kontakty.txt");
}
	
void del()
{
	printf("Podaj imie kontaktu, ktory usunac: ");
	scanf_s("%[^\n]",&name);
	fp=fopen("kontakty.txt","r");
	ft=fopen("temp.dat","w");
	while(fread(&list,sizeof(list),1,fp)!=0)
	if (strcmp(name,list.firstName)!=0)
		fwrite(&list,sizeof(list),1,ft);
	fclose(fp);
	fclose(ft);
	remove("kontakty.txt");
	rename("temp.dat","kontakty.txt");
}



int main()
{
main:
	system("cls");
	printf("Baza kontaktow");
    printf("Menu");
	printf("Co wybierasz?");
	scanf_s("%d", &ch);
	switch(ch)
	{
	case 1:
		system("cls");
		add();
		break;
	case 2:
		system("cls");
		show();
		break;
	case 3:
		system("cls");
		edit();
		break;
	case 4:
		system("cls");
		del();
		break;
	}
	return 0;
} 

Nie wiem czy to coś może pomóc, ale break wskazuje na coś takiego

 void __cdecl _unlock (
        int locknum
        )
{
        /*
         * leave the critical section.
         */
        LeaveCriticalSection( _locktable[locknum].lock );
}