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:
il costrutto if testa la condizione interna alle parentesi e se vera esegue il blocco di istruzioni successivo, altrimenti lo salta....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 */ [...] }
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?

Rispondi quotando