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.