[C] Pliki tekstowe - baza danych

nejfan
Użytkownik
Użytkownik
Posty: 77
Rejestracja: 14 lis 2015, o 00:03
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 16 razy
Pomógł: 1 raz

[C] Pliki tekstowe - baza danych

Post autor: nejfan »

W pliku BazaÓsób.txt zawarte są dane osób w nastepujący sposób:

Kod: Zaznacz cały

imię
nazwisko
płeć
wiek
stan cywilny
Napisz program, który zapisze do pliku Emeryci.txt dane tylko osób z pliku BazaOsób.txt, które mają co najmniej 67 lat. Dane w pliku Emeryci.txt mają być zapisane w taki sam sposób jak w pliku BazaOsób.txt.

Bardzo proszę o podpowiedź w jaki sposób podejść do tego problemu.
Ostatnio zmieniony 7 cze 2016, o 06:39 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C] Pliki tekstowe - baza danych

Post autor: bartek118 »

Czytasz dane i zapisujesz tylko te z odpowiednim wiekiem. W czym problem?
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Pliki tekstowe - baza danych

Post autor: kalwi »

Kod: Zaznacz cały

fscanf(baza_osob, "%s
%s
%s
%d
%s", imie, nazwisko, plec, &wiek, stan);
if(wiek > 67)
       fprintf(emeryci, "%s
%s
%s
%d
%s", imie, nazwisko, plec, wiek, stan);
nejfan
Użytkownik
Użytkownik
Posty: 77
Rejestracja: 14 lis 2015, o 00:03
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 16 razy
Pomógł: 1 raz

[C] Pliki tekstowe - baza danych

Post autor: nejfan »

Kod: Zaznacz cały

/* W pliku BazaÓsób.txt zawarte są dane osób w nastepujący sposób:
imię
nazwisko
płeć
wiek
stan cywilny
Napisz program, który zapisze do pliku Emeryci.txt dane tylko osób z pliku BazaOsób.txt, które mają co najmniej 67 lat/ Dane w pliku Emeryci.txt mają być zapisane w taki sam sposób jak w pliku BazaOsób.txt.
*/

#include<stdio.h>
#include<string.h>
main()
{
	char imie[30], nazwisko[30],plec[30],stan[30];
	int wiek;
	FILE *f1,*f2;
	f1=fopen("BazaOsób.txt","r");
	f2=fopen("Emeryci.txt","w+");
	while(feof(f1)==0)
	{
		fscanf(f1,"%s
%s
%s
%d
%s",imie,nazwisko,plec,&wiek,stan);
		if(wiek>67)
		{
			fprintf(f2,"%s
%s
%s
%d
%s
",imie,nazwisko,plec,wiek,stan);
		}
	}
	fclose(f1);
	fclose(f2);
	
}


}
Czy dobrze to zrozumiałem?
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Pliki tekstowe - baza danych

Post autor: kalwi »

brakuje:

Kod: Zaznacz cały

if(f1 == NULL or f2 == NULL) //jakis kod
oraz można prościej:

Kod: Zaznacz cały

while(fscanf(f1,"%s
%s
%s
%d
%s",imie,nazwisko,plec,&wiek,stan) != EOF)
{
    if(wiek>67)
       fprintf(f2,"%s
%s
%s
%d
%s
",imie,nazwisko,plec,wiek,stan);
}
-- 6 cze 2016, o 22:09 --no i nie piszemy samego maina, tylko int main()
ODPOWIEDZ