Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [c] - Prevenzione Errori

    Salve, ho scritto questo programma:
    codice:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    
    char* myTime( void )
    {
    
    
        struct tm *timeinfo = NULL;                
        time_t rawtime = 0;                                                 
        time_t ver = 0;                  
        char *buffer = NULL;
    
    
        buffer = (char *)calloc( 25 , sizeof( char ) ); 
        time( &rawtime );
        timeinfo = localtime( &rawtime ); 
        strftime( buffer , 25 , "%d-%m-%Y alle %H:%M:%S" , timeinfo );   
        return buffer;
    }
    
    
    /* main alla meno peggio  per provare la funzione */
    int main()
    {
        char *buffer;
        buffer=myTime();
        puts(buffer) ;
        
        return 0;
    }
    mi chiedevo, Come buona pratica di programmazione, che controlli dovrei effettuare??
    e' bene controllare input delle funzioni e il valore restituito di ogni singola funzione?
    Ad esempio il programma cosi controllato:

    codice:
    char* TimeError( void )
    {
        /* ============ DEFINIZIONE E INIZZIALIZZAZZIONE VARIABILI ============== */
        struct tm *timeinfo = NULL;                
        time_t rawtime = 0;                                                   
        time_t ver = 0;                                                        
        char *buffer = NULL;
        char *nullo = "Orario non disponibile\n";                                                    
        /* ====================================================================== */
    
    
        /* ===== ALLOCO LA MEMORIA PER LA STRINGA CHE CONTERRA' ORA E DATA ====== */
        buffer = (char *)calloc( 25 , sizeof( char ) );                       
        if( buffer == NULL ) {
            /* */
            fprintf( stderr , "%s" , "memoria per buffer non allocata\n" );   
            return nullo;                                                     
        }                                                                      
        /* ====================================================================== */
    
    
        /* ====================================================================== */
        ver = time( &rawtime );                                              
        if( ver == -1 ) {
            /* */
            fprintf( stderr , "%s" , "time() non riuscita\n" );                
            return nullo;                                
        }                                                                     
        /* ====================================================================== */
    
    
        /* ====================================================================== */
        timeinfo = localtime( &rawtime );                                      
        if( timeinfo == NULL ) {
            /* */
            fprintf( stderr , "%s" , "struct timeinfo non riempita \n" );     
            return nullo;                                 
        }                                                                     
        /* ====================================================================== */
    
    
        /* ====================================================================== */
        ver = strftime( buffer , 25 , "%d-%m-%Y alle %H:%M:%S" , timeinfo );   
        if( ver == 0 ) {
            /* */
            fprintf( stderr , "%s" , "strftime non riuscita\n" );             
            return nullo;                                 
        }                                                                    
        /* ====================================================================== */
    
    
        return buffer;
    }

    So che esiste la funzione assert() ma non so come utilizzarla per andare a prendere il singolo errore.

  2. #2
    up!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    assert(...) non è adatto al tuo scopo, si utilizza per valutare le espressioni.

    Per il resto quello che stai facendo va bene, esaminare le possibili eccezioni in entrata e in uscita nel tuo codice.

  4. #4
    Quote Originariamente inviata da Paulin Visualizza il messaggio
    assert(...) non è adatto al tuo scopo, si utilizza per valutare le espressioni. Per il resto quello che stai facendo va bene, esaminare le possibili eccezioni in entrata e in uscita nel tuo codice.
    grazie

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.