Ho scritto questo codice come esercizio di fread , di un file dat esterno non generato dal programma .
La prima parte funziona.
poi volevo ordinarlo con una Qsort ma mi da i seguenti errori (sono alle prime armi).
C:\Users\AppData\Local\Temp\ccmCMoGe.o    freadSemplice.cpp
.text+0x36c): undefined reference to `scambia(vedi*, long, long)'
C:\Users\AppData\Local\Temp\ccmCMoGe.o    freadSemplice.cpp
.text+0x3c1): undefined reference to `Qsort(vedi*, long, long)'
C:\Users\AppData\Local\Temp\ccmCMoGe.o    freadSemplice.cpp
.text+0x3f0): undefined reference to `Qsort(vedi*, long, long)'
C:\Users\Desktop\Prova programmi\collect2.exe    [Error] ld returned 1 exit status
Il codice che ho scritto è il seguente :
	codice:
	#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
#include<math.h>
#define        STORE_FILE        "store.dat"
#define    L 50                //do una dimensione max al vettore 
typedef struct {                //creo vettore in cui salvare le letture 
    char campo1 [L];
    char campo2 [L];
}  vedi;
void scambia (vedi[],long ,long );
void Qsort(vedi[],long,long );
vedi *v ;
unsigned long g;
int main(void )
{
    do{
        printf("\nInserisci la grandezza del vettore :");
    scanf("%u",&g);
        } while (g<2);
         v=(vedi*) malloc(g*sizeof(vedi));
    char tp;{
        printf("\n\t----------");
    printf("\n\t1-Leggi file" );
    printf("\n\t2-ordina File");
    printf("\n\t3-esci");
        printf("\n\t----------");
        }
        printf("\n\t-Scelta :",tp);
        tp=getchar();
        getchar();
        switch (tp){
            case '1':
    FILE *fp;
    int i;
    vedi m;
        if(!(fp=fopen("store.dat","rb"))){                                
            printf("\n errore di lettura dei dati%s ",STORE_FILE);            //creo il controllo 
            exit(1);
        }
        while (fread(&m,sizeof(m),1,fp)>0){                //legggo il file binario esterno 
            printf("\n-------------");
        printf("\ncampo1:%s",m.campo1);                //stampo i dati salvati nalla typedef struct 
        printf("\ncampo2:%s",m.campo2);
            
            printf("\n-------------");
                }
        fclose(fp);
        return main();
        break;
        case '2':
            vedi *v;
        void scambia(vedi [],long i,long j) ;{
                long i;
                long j;
            vedi temp =v[i];
            v[i]=v[j];
            v[j]=temp;
        }
        void  Qsort(vedi [],long min ,long mag);
            {    long min;
                long mag;
                long i=min;
                long j=mag;
                vedi pivot =v[(min+mag)/2];
            while (i<=j){
                while (strcmp(v[i].campo1,pivot.campo1)<0 || (!strcmp(v[i].campo1,pivot.campo1)<0))
                i++;
                while (strcmp(v[j].campo1,pivot.campo1)>0 || (!strcmp(v[j].campo1,pivot.campo1)<0))
                j--;
            }
                if (i<j)
                    scambia (v,i,j);
                    if(i<=j){
                        i++;
                        j--;
                    }
            
            {
            if (min<j)  Qsort(v,min,j);
            if (i<mag)    Qsort(v,i,mag);
            }
        }
        break;
        case '3':    
        exit (1);
        break ;
}
}
 
chi mi aiuta ?????????????????