Witam.
Mam napisać program, który pobiera z pliku (plik1.txt) dane o osobie zapisane w jednej linii (imię nazwisko wiek(w miesiącach)) po czym zapisuje do innego pliku (plik2) tylko imię i nazwisko osób mających więcej niż 4 i mniej niż 18 lat. Problemem jest to, że nie wiem ile osób jest wpisanych do pliku1. Program się kompiluje ale po uruchomieniu czeka chwilę, po czym wyskakuje komunikat, e program przestał działać.
Mój kod wygląda tak:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct osoba
{
char imie[20];
char nazwisko[30];
int wiek;
};
int main()
{
struct osoba kartoteka[100], max;
FILE *plik1, *plik2;
int i, l;
char j;
plik1=fopen("plik1.txt", "rt");
while( (j = fgetc(plik1)) != EOF)
{
if ( j == '\n')
l++;
}
fseek ( plik1, 0 , SEEK_SET );
for (i = 0; i < l; i++)
{
fscanf(plik1, "%s", kartoteka[i].imie);
fscanf(plik1, "%s", kartoteka[i].nazwisko);
fscanf(plik1, "%d", &kartoteka[i].wiek);
}
fclose (plik1);
for ( i = 0; i < l; i++)
kartoteka[i].wiek = kartoteka[i].wiek/12;
printf("Osoby podejrzane: \n");
for (i = 0; i < l; i++)
{
printf("%s %s lat %d\n", kartoteka[i].imie, kartoteka[i].nazwisko, kartoteka[i].wiek);
}
plik2 = fopen("plik2.txt", "wt");
for (i = 0; i < l; i++)
{
if (kartoteka[i].wiek > 4 && kartoteka[i].wiek < 18)
fprintf(plik2, "%s %s\n", kartoteka[i].imie, kartoteka[i].nazwisko);
}
fclose (plik2);
getchar();
}
Proszę o wskazanie błędu i poprawienie go w kodzie, lub sugestie jak to poprawić :)