PDA

View Full Version : [C] warning con la fopen


jarno
26-03-2009, 11:32
ciao a tutti :)

ho questo pezzo di codice


FILE *fp;

char file_utenti[30]="utenti.dat";

if((fp=fopen(file_utenti,"r"))!=EOF)


e mi da un warning nella compilazione

warning: comparison between pointer and integer

come mai? come risolvo questo problema?

grazie in anticipo :)

jarno
26-03-2009, 13:22
stupido errore:

!=NULL e non !=EOF XD

WarDuck
28-03-2009, 01:12
Usa le API Posix sono 2 righe di codice ;).

open(), read(), write() ...

stefano_ba
29-03-2009, 11:24
if((fp=fopen(file_utenti,"r"))!=EOF)


Se non ricordo male l'operazione di assegnazione = ritorna sempre valore 1.
Secondo me sarebbe piu' corretto scrivere:



fp=fopen(file_utenti,"r");

if(fp!=EOF)
{
...
}

Ziosilvio
29-03-2009, 13:00
FILE *fp;

char file_utenti[30]="utenti.dat";

if((fp=fopen(file_utenti,"r"))!=EOF)


e mi da un warning nella compilazione

warning: comparison between pointer and integer

come mai?
EOF è una costante di tipo int.
Il risultato di fopen, invece, è un puntatore a FILE.
I due tipi sono diversi e non immediatamente confrontabili.

Oltretutto, fopen restituisce NULL in caso di errore nell'apertura del file.
Se non ricordo male l'operazione di assegnazione = ritorna sempre valore 1.
Ricordi male. Succede.