C blad przy kompilowaniu podczas sortowania

0

Witam, mam za zadanie posortować bazę danych, lecz przy kompilowaniu wywala mi błąd:
error: incompatible types when assigning to type ‘char[20]’ from type ‘char *’

Jak rozwiązać ten problem? Z góry dzięki
Moj kod:

 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10000
int main() 
{
  system("clear");
typedef struct Osoba{
    char imie[20];
    char nazwisko[20];
    int pensja;
} Osoba;
 Osoba tab[N];


  ... //Uzupelnianie struktury

//poczatek sortowania
 int n,m,j;
 char *tmpimie[20];
 char *tmpnazwisko[20];
 int tmppensja;
 
   n=N;
  while (n>1) {
    m=1; 
    
    for (i=1; i<n; i=i+1)
     for(j=0; j<20; j++)
      if (tab[i-1].nazwisko[j]  < tab[i].nazwisko[j] ) {
	printf("tak\n");
	
	tmpimie=tab[i-1].imie; tab[i-1].imie=tab[i].imie; tab[i].imie=tmpimie;                                          // tu zaczyna się błąd
	tmpnazwisko=tab[i-1].nazwisko; tab[i-1].nazwisko=tab[i].nazwisko; tab[i].nazwisko=tmpnazwisko;
	tmppensja=tab[i-1].pensja; tab[i-1].pensja=tab[i].pensja; tab[i].pensja=tmppensja;                      // tu konczy
  

	/*
Probowalem to rozwiazac tak lecz dalej mi nie sortuje
	strcpy(tmpimie, tab[i-1].imie);	
        strcpy(tab[i-1].imie, tab[i].imie);
        strcpy(tab[i].imie, tmpimie);
	
	strcpy(tmpnazwisko, tab[i-1].nazwisko);
        strcpy(tab[i-1].nazwisko, tab[i].nazwisko);
        strcpy(tab[i].nazwisko, tmpnazwisko);
	
	strcpy(tmppensja, tab[i-1].pensja);
        strcpy(tab[i-1].pensja, tab[i].pensja);
        strcpy(tab[i].pensja, tmppensja);
	*/
      
        m=i;
      }
    n=m;
  }
  
 return 0;
}
0
laikkk napisał(a):
 
typedef struct Osoba{
    char imie[20];
    char nazwisko[20];
    int pensja;
} Osoba;

 char *tmpimie[20];

tmpimie=tab[i-1].imie; tab[i-1].imie=tab[i].imie; tab[i].imie=tmpimie;                                          // tu zaczyna się błąd

Wiec chcesz przypisac tablice znakow do tablicy pointerow na znaki?

1
    for (i=1;i<n;++i) if(strcmp(tab[i-1].nazwisko,tab[i].nazwisko)<0) { Osoba tmp=tab[i-1]; tab[i-1]=tab[i]; tab[i]=tmp; m=i; }
0

Dzięki wielkie _13th_Dragon twoje rozwiązanie działa ;) +

1 użytkowników online, w tym zalogowanych: 0, gości: 1