Non so se sia il forum giusto, ma ho dei problemi con un programma sulle liste in C!Lo scrivo qui sotto:
#include<stdio.h>
#include<conio.h>
typedef enum {FALSE,TRUE} boolean;
typedef struct pol_gen
{
int coeff;
int esp;
struct pol_gen *next;
} polinomio;
/*prototipi*/
boolean crea_pol(char[],polinomio);
void calcola_prodotto();
void stampa_prodotto();
/*dichiaro teste delle liste*/
polinomio* polA_testa;
polinomio* polB_testa;
polinomio* polP_testa;
main()
{
char fileA[6];
char fileB[6];
/*clrscr();*/
printf("Calcolo del prodotto tra due polinomi memorizzati su file!\n");
strcpy(fileA,"A.txt");
strcpy(fileB,"B.txt");
if(!((crea_pol(fileA, polA_testa))&&(crea_pol(fileB,polB_testa))))
/*Controllo sulla corretta lettura da file dei due polinomi*/
printf("Impossibile leggere uno dei due polinomi!\n");
/*else
calcola_prodotto();*/
}/*end main*/
boolean crea_pol(char nome_file[6], polinomio *testa)
{
FILE *fp;
boolean lettura_riuscita;
boolean flag;
polinomio *mon_corr;
polinomio *temp;
int coeff=0;
int esp;
if((fp=fopen(nome_file,"r"))==NULL)
lettura_riuscita = FALSE;
else
{
lettura_riuscita = TRUE;
flag = FALSE;
while(flag == FALSE)/*PRIMO ERRORE!!!!*/
{
fscanf(fp,"%d%d",&coeff,&esp);
mon_corr = (polinomio *) malloc (sizeof(polinomio));
mon_corr->coeff = coeff;
mon_corr->esp = esp;
if(testa == NULL)/*Non ci sono ancora elementi nella lista*/
{
if(coeff==0) /*SECONDO ERRORE!!!!*/
flag = TRUE;
testa = mon_corr;
mon_corr->next = NULL;
}/* end if(coeff==0) */
else
{
if(coeff==0)
flag=TRUE;
else
{
temp = testa;
while(temp->next != NULL)
temp = temp->next;
temp->next = mon_corr;
mon_corr->next = NULL;
}
}
}/*end while*/
}/*end if(fp=fopen....)*/
return(lettura_riuscita);
}/*end crea_pol*/
Ecco... Il problema è che io passo polA_testa come parametro alla funzione crea_pol, ma nonostante il parametro sia passato by ref, non mi modifica il valore di polA_testa.Chiunque possa aiutarmi è ben accetto!!! Grazie guys... :maLOL: