Secondo me ti stai complicando la vita inutilmente... puoi usare le (orribili) funzioni di <time.h> per risolvere il problema:
Se invece lavori in C++ e hai a disposizione boost puoi usare la ottima Boost.DateTime, sicuramente migliore delle odiose funzioni di time.h.codice:#include <time.h> // ... struct tm data={0}; printf("Inserisci una data --> "); scanf("%2d%2d%4d", &data.tm_mday, &data.tm_mon, &data.tm_year); // Aggiusto per il formato richiesto da struct tm data.tm_mon--; // I mesi nella struttura tm sono con base 0 e non 1 data.tm_year-=1900; // Gli anni hanno come 0 il 1900 data.tm_isdst=-1; // Indovina da solo se c'è l'ora legale time_t timestamp=mktime(&data); // Converte la struttura con le componenti di data "spezzate" in un timestamp (di fatto è il numero di secondi passati dall'1/1/1970 alle 0.00 fino alla data di destinazione) timestamp+=24*60*60; // Passa al giorno successivo aggiungendo un adeguato numero di secondi data=*localtime(×tamp); // Riconverte il timestamp così modificato in una struttura tm printf("Il giorno seguente e' il --> %2d %2d %4d.\n\n\n", data.tm_mday, data.tm_mon+1, data.tm_year+1900);

Rispondi quotando