Δημοσιεύτηκε: 21 Ιουν 2011, 15:07
από migf1
Θα μπορούσες να βελτιστοποιήσεις λιγάκι και τον κώδικα της xdays() αφαιρώντας το όρισμα του πρόσημου. Μπορείς να την κάνεις δλδ κάπως έτσι:

Κώδικας: Επιλογή όλων

int xdays(int days)
{
/* Get date after / before X days */
struct tm *timeinfo;
time_t rawtime;

rawtime = time(NULL);
timeinfo = localtime(&rawtime);
timeinfo->tm_mday = timeinfo->tm_mday + days;
sprintf(buffer, "Date %s %d days: ",
days < 0 ? "before" : "after",
days < 0 ? -days : days);

mktime(timeinfo);

fputs(buffer, stdout);
strftime(buffer, SIZE, "%A, %B %d %Y.\n", timeinfo);
fputs(buffer, stdout);

return 0;
}


και κατόπιν να την καλείς είτε με θετικό είτε με αρνητικό όρισμα:
Κώδικας: Επιλογή όλων

xdays(-30); // ή π.χ. xdays(15);


Αφενός το ? : είναι τελεστής και εκτελείται πιο γρήγορα από το απλό if-else, αφετέρου γλιτώνεις ένα όρισμα.

medigeek έγραψε:Διορθώθηκε! Για το setlocale είναι νωρίς ακόμη. :P