Salve, volevo chiedere spiegazioni riguardante un'esempio di codice inserito nela guida C del sito.
mi riferisco all'esempio di pag 37 [La Funzione fopen]
posto il codice:
codice:
#include <stdio.h>
int main()
{
/* dichiara lo stream e il prototipo della funzione fopen */
FILE *stream, *fopen();
/* apre lo stream del file */
stream = fopen("miofile.txt", "r");
/* controlla se il file viene aperto */
if ((stream = fopen("miofile.txt", "r")) == NULL)
{
printf("Non posso aprire il file %sn", "miofile.txt");
exit(1);
}
[...]
/* Codice che lavora sul file */
[...]
}
il costrutto if testa la condizione interna alle parentesi e se vera esegue il blocco di istruzioni successivo, altrimenti lo salta....
in questo caso il test non viene fra lo stream e NULL, ma fral'esito della operazione stream = fopen("miofile.txt", "r") e NULL,
ora il codice funziona, perche nel caso l'operazione non vada a buon fine torna uno 0, il quale comparato con NULL da esito positivo,
Ciò che non capisco e per quale motivo fare 2 volte la stessa operazione, non basterebbe soltato testare se stream == Null? oppure omettere l'apertura dello stream prima del'if?