#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct osoba
{
char imie[40];
char nazwisko[40];
int numer;
};
void dodaj();
void popraw();
void wyswietl();
void usun();
int main ()
{
char znak;
do
{
printf("Menu:\n");
printf("a-add\n");
printf("c-correct\n");
printf("s-show\n");
printf("d-delete\n");
printf("e-exit\n");
printf("\nPodaj znak:\n");
scanf("%c", &znak);
switch(znak)
{
case'a': dodaj(); break;
case'c': popraw(); break;
case's': wyswietl(); break;
case'd': usun(); break;
case'e': break;
}
system("cls");
}while(znak!='e');
return 0;
}
void usun()
{
int znak;
char nazwa[256];
printf("Podaj nazwe plik: ");
fflush(stdin);
gets(nazwa);
strcat(nazwa,".txt");
printf("Czy na pewno usunac plik o nazwie %s? Jesli tak wcisnij 1.\n", nazwa);
scanf("%d", &znak);
if(znak==1)
remove(nazwa);
}
void dodaj()
{
FILE *plik;
struct osoba person;
char nazwa[256];
char string[40];
fflush(stdin);
puts("Podaj nazwe pliku:");
scanf("%s", &nazwa);
strcat(nazwa,".txt");
if((plik = fopen(nazwa,"wb")) == NULL)
{
fputs("Nie moge otworzyc pliki\n", stderr);
exit(1);
}
puts("Podaj Imie: ");
fflush(stdin);
scanf("%39[^\n]s", string);
strcpy(person.imie, string);
puts("Podaj Nazwisko: ");
fflush(stdin);
scanf("%39[^\n]s", string);
strcpy(person.nazwisko, string);
puts("Podaj numer : ");
fflush(stdin);
scanf("%d",&person.numer);
fwrite(&person,sizeof(struct osoba), 1, plik);
printf("Osoba dodana poprawnie!\n");
system("Pause");
fclose(plik);
}
void popraw()
{
struct osoba person;
FILE *plik;
char nazwa[256];
printf("Podaj nazwe pliku: ");
fflush(stdin);
gets(nazwa);
strcat(nazwa, ".txt");
if((plik = fopen(nazwa,"rb")) == NULL)
{
fputs("Nie moge otworzyc pliku\n", stderr);
exit(1);
}
else
{
fwrite(&person,sizeof(struct osoba), 1, plik);
fclose(plik);
printf("%s %s %d\n",person.imie,person.nazwisko,person.numer);
}
if((plik = fopen(nazwa,"wb")) == NULL)
{
fputs("Nie moge otworzyc pliki\n", stderr);
exit(1);
}
puts("Podaj Imie: ");
fflush(stdin);
gets(person.imie);
puts("Podaj Nazwisko: ");
fflush(stdin);
gets(person.nazwisko);
puts("Podaj numer : ");
scanf("%d", &person.numer);
fprintf(plik, "%s | %s | %d\n", person.imie, person.nazwisko, person.numer);
fclose(plik);
}
void wyswietl()
{
struct osoba person;
char nazwa[256];
FILE *plik;
printf("Podaj nazwe pliku: ");
fflush(stdin);
gets(nazwa);
strcat(nazwa, ".txt");
if((plik = fopen(nazwa,"r")) == NULL)
{
fputs("Nie moge otworzyc pliku\n", stderr);
exit(1);
}
else
{
fwrite(&person,sizeof(struct osoba), 1, plik);
fclose(plik);
printf("%s %s %d\n",person.imie,person.nazwisko,person.numer);
}
system("PAUSE");
}
Załączam cał program który powienien chyba działać ale zamiast tekstu wyświetla kwadraciki. Wydaje mi się że dobrze napisałem go.