Witam!
Mam problem z funkcja "void najczestsza_usterka(Lista glowny)":

Oto kod programu:

[code]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct dane {
int id;
int rok;
char zepsucie[50];
double cena;
int liczba_dni;
char uszkodzenie[50];
struct dane * nastepny;
} Dane;

typedef struct dane2 {
int liczba_wystapien;
char uszkodzenie[50];
struct dane2 * nastepny;
} Dane2;

typedef Dane * Lista;
typedef Dane2 * Lista2;

void najczestsza_usterka(Lista glowny)
{
char tmp[20];
int element = 0;
Lista2 glowny2, pom2;
while(glowny != NULL)
{
strcpy(tmp, glowny -> uszkodzenie);
if(glowny2 == NULL)
{
glowny2 = (Lista2)malloc(sizeof(Dane2));
glowny2 -> nastepny = NULL;
strcpy(glowny2 -> uszkodzenie, tmp);
glowny2 -> liczba_wystapien = 1;
}
else
{
pom2 = glowny2;
while(pom2 != NULL)
{
if(strcmp(pom2 -> uszkodzenie, tmp) == 0)
{
element = 1;
pom2 -> liczba_wystapien++;
break;
}
pom2 = pom2 -> nastepny;

        }
        if(!element)
        {
             pom2 = (Lista2)malloc(sizeof(Dane2));
             pom2 -> nastepny = glowny2;
             strcpy(pom2 -> uszkodzenie, tmp);
             pom2 -> liczba_wystapien = 1;
             glowny2  = pom2;
        }
        element = 0;
    }
    glowny = glowny -> nastepny;
}
int max = 0;
while(glowny2 != NULL)
{
    if(glowny2 -> liczba_wystapien > max)
    {
        max = glowny2 -> liczba_wystapien;
        strcpy(tmp, glowny2 -> uszkodzenie);
    }
    glowny2 = glowny2 -> nastepny;
}
printf("%s\n", tmp);

}

int main(void)
{
int id, rok, liczba_dni;
double cena;
char zepsucie[50], uszkodzenie[50];
FILE * plik = fopen("plik.txt", "r");
if(plik == NULL)
printf("Blad");
Lista glowny = NULL;
Lista biezacy, pom;
while(fscanf(plik, "%d %d %s %lf %d %s", &id, &rok, zepsucie, &cena, &liczba_dni, uszkodzenie) == 6)
{
biezacy = (Lista)malloc(sizeof(Dane));
biezacy -> nastepny = NULL;
biezacy -> id = id;
biezacy -> rok = rok;
strcpy(biezacy -> zepsucie, zepsucie);
biezacy -> cena = cena;
biezacy -> liczba_dni = liczba_dni;
strcpy(biezacy -> uszkodzenie, uszkodzenie);
if(glowny == NULL)
glowny = biezacy;
else
pom -> nastepny = biezacy;
pom = biezacy;
}
fclose(plik);
if(glowny != NULL)
biezacy = glowny;
printf("Dane z pliku:\n");
while(glowny != NULL)
{
printf("%d %d %s %.2lf %d %s\n", glowny -> id, glowny -> rok, glowny -> zepsucie, glowny -> cena, glowny -> liczba_dni, glowny -> uszkodzenie);
glowny = glowny -> nastepny;
}
najczestsza_usterka(biezacy);
free(glowny);
return 0;
}
[/code]

To zawartość pliku tekstowego:
[code]
3 2004 miasto 3500.00 3 problem_z_silnikiem
2 2005 poza_miastem 2700.00 2 przebita_opona
5 2005 miasto 3000.00 1 problem_z_silnikiem
6 2003 miasto 3700.00 4 hamulec_reczny
4 2003 miasto 2000.00 3 hamulec_reczny
3 2006 miasto 200.00 3 elektronika
[/code]

Ale ona tylko wypisuje tylko hamulec_reczny, a powinna jeszcze problem z silnikiem.
Bo ta funkcja szuka jednego elementu, jak chciałem zmienić, żeby więcej to błąd wyskoczył, proszę o pomoc.