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 );
}