Witam, napisałem taki oto program który za zadanie ma wykonywać proste operacje na strukturach. Gdy deklaruje osoby i zapisuje je do pliku jedną z danych jest numer.
- Jak będzie wyglądała funkcja która będzie usuwała z pliku osobę o tym numerze(funkcja usuń).
- Czy jest możliwość aby gdy otworzę ten plik z danymi nie pojawiały się w niektórych miejscach "szlaczki" tylko dokładnie te informacje które podałem?
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void nowy (void);
void dopisz (void);
//void usun (void);
void wyswietl (void);
struct osoba
{
char imie[20];
char nazwisko[20];
int numer;
}czlowiek;
FILE *plik;
main()
{
char znak;
do
{
printf("\npodaj znak\n n-otworz plik\n d-dopisz osobe\n u-usun osobe o podanym numerze\n w-wyswietl wszystkich\n z-wyjscie");
fflush(stdin);
znak=getchar();
switch (znak)
{
case 'n':
nowy();
break;
case 'd':
dopisz();
break;
/*case 'u':
usun();
break;*/
case 'w':
wyswietl();
break;
case 'z':
system("cls");
fclose(plik);
printf("\nplik zostal zamkniety\n");
printf("nacisnij klawisz q aby zamknac program\n");
break;
}
} while (znak !='q');
}
void nowy (void)
{
system("cls");
plik=fopen("c:/onp/lab6.txt", "w+");
printf("plik zostal utworzony\n");
}
void dopisz (void)
{
system("cls");
printf("podaj imie ");
scanf("%s", czlowiek.imie);
printf("podaj nazwisko ");
scanf("%s", czlowiek.nazwisko);
printf("podaj numer ");
scanf("%d", &czlowiek.numer);
fwrite(&czlowiek,sizeof(struct osoba),1,plik);
};
void wyswietl(void)
{
struct osoba wysw;
system("cls");
fclose(plik);
plik=fopen("c:/onp/lab6.txt", "r");
printf("\n imie \t\t nazwisko \t\t numer\n");
while (fread(&wysw,sizeof(struct osoba),1,plik)==1)
{
printf("\n %s \t\t %s \t\t %d\n", wysw.imie,wysw.nazwisko,wysw.numer);
}
}