PDA

View Full Version : Passaggio parametri in C


enzocacace
30-10-2004, 17:54
Ragazzi qualcuno può aiutarmi?

void carica_stanze(elem *punt_testa, int *tot_stanze)
{

FILE *fp = fopen("info.txt","r");

if (fp == NULL)
printf ("ERRORE NELL'APERTURA DEL FILE ! \n");
else
{
inserimento_stanze_pila(fp,&(*punt_testa),&(*tot_stanze)); //numero di stanze
}
fclose (fp); //chiudo il file
}

void inserimento_stanze_pila(FILE fp,elem *punt_testa, int *tot_stanze)
{
int num,piano,num_stanze,flag=0;
while (fscanf (fp, "%d", &num) != EOF ) //lettura file
{
if (flag==0)
{
piano=num; //leggo il piano
flag=1; //imposto la flag a 1,in tal modo dopo leggero' il numero
} //di stanze occupate
else
{
num_stanze=num; //stanze occupate
*tot_stanze=*tot_stanze+num; //numero totale di stanze occupate in una giornata
flag=0;
inserimento(punt_testa, piano, num_stanze); //inserisco nella pila piano e
} //numero di stanze
}
}

COme faccio a passare fp(grassetto) altra procedura e poi utilizzarla?
Sto andando al manicomio, ho provato in tutti i modi!!!!!!Non sò

SnakePlissken
30-10-2004, 19:38
fp è un puntatore!
Il parametro formale va dichiarato come FILE *fp non FILE fp

;)

Fenomeno85
30-10-2004, 23:25
[QUOTE]Originariamente inviato da enzocacace
Ragazzi qualcuno può aiutarmi?


FILE *fp = fopen("info.txt","r");


ma sei sicuro che puoi fare una cosa dele genere?:mbe: non ho voglia di guardare :)

cmq quando passi metti fp nei parametri formali mentre nei paramentri attuali ci metti FILE **fp dovrebbe funzionare ;)

~§~ Sempre E Solo Lei ~§~

ghiotto86
31-10-2004, 08:18
Originariamente inviato da Fenomeno85
[QUOTE]Originariamente inviato da enzocacace
Ragazzi qualcuno può aiutarmi?

[code]
cmq quando passi metti fp nei parametri formali mentre nei paramentri attuali ci metti FILE **fp dovrebbe funzionare ;)

~§~ Sempre E Solo Lei ~§~

oppure FILE &fp

SnakePlissken
31-10-2004, 09:14
Perché vi dovete complicare la vita!?

Si fa così:
FILE *fp;
...
funzione(fp /*parametro reale*/ ); // la chiamata
...
void funzione (FILE * fp /* parametro formale*/) {
...
}

Originariamente inviato da Fenomeno85
...
Non puoi utilizzare la doppia indirezione con un semplice puntatore!

Originariamente inviato da ghiotto86
...
Nemmeno questo mi sa che funziona.


Ciao!

ghiotto86
31-10-2004, 09:33
Originariamente inviato da SnakePlissken
Perché vi dovete complicare la vita!?

Si fa così:
FILE *fp;
...
funzione(fp /*parametro reale*/ ); // la chiamata
...
void funzione (FILE * fp /* parametro formale*/) {
...
}


Non puoi utilizzare la doppia indirezione con un semplice puntatore!


Nemmeno questo mi sa che funziona.


Ciao!

si vabbe così penso che funzia. ho messo &pf per come voleva farlo lui.

enzocacace
31-10-2004, 11:43
Cmq ho risolto già, ed era come dicevate voi!!!

void carica_stanze(elem *punt_testa, int *tot_stanze)
{

FILE *fp = fopen("info.txt","r");

if (fp == NULL)
printf ("ERRORE NELL'APERTURA DEL FILE ! \n");
else
{
inserimento_stanze_pila(fp,&(*punt_testa),&(*tot_stanze)); //numero di stanze
}
fclose (fp); //chiudo il file
}

void inserimento_stanze_pila(FILE *fp,elem *punt_testa, int *tot_stanze)
{
int num,piano,num_stanze,flag=0;
while (fscanf (fp, "%d", &num) != EOF ) //lettura file
{
if (flag==0)
{
piano=num; //leggo il piano
flag=1; //imposto la flag a 1,in tal modo dopo leggero' il numero
} //di stanze occupate
else
{
num_stanze=num; //stanze occupate
*tot_stanze=*tot_stanze+num; //numero totale di stanze occupate in una giornata
flag=0;
inserimento(punt_testa, piano, num_stanze); //inserisco nella pila piano e
} //numero di stanze
}
}