Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Ifrit
    Registrato dal
    Oct 2005
    Messaggi
    116

    [C] Errore nella guida del forum?

    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?
    codice:
     $(".canaglia").show()

  2. #2
    Sì è un errore, dovrebbe fare così:
    Codice PHP:
    #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 == NULL)
       {
          
    printf("Non posso aprire il file %sn""miofile.txt");
          exit(
    1);
       }

       [...]
       
    /* Codice che lavora sul file */
       
    [...]


    oppure:
    Codice PHP:
    #include <stdio.h>

    int main()
    {

       
    /* dichiara lo stream e il prototipo della funzione fopen */
       
    FILE *stream, *fopen();

       
    /* apre lo stream del file e 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 */
       
    [...]



  3. #3
    Utente di HTML.it L'avatar di Ifrit
    Registrato dal
    Oct 2005
    Messaggi
    116
    si e quello ke avevo pensato :-)
    no volevo solo avere conferma ke nel codice postato c'era quest'incoerenza
    grazie

    p.s.
    [Avvertiamo lo staff almeno corregge, oppure lasciamo cosi?]
    codice:
     $(".canaglia").show()

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.