Δημοσιεύτηκε: 21 Ιουν 2011, 13:33
Ωραίο
Δείγμα χρήσης των έτοιμων συναρτήσεων της C. Μπορείς να το συνδυάσεις με την συνάρτηση setlocale() ώστε τα μηνύματα που βγάζει να βγαίνουν στη γλώσσα που είναι ρυθμισμένο το σύστημα του χρήστη (το πρόβλημα είναι πως δεν θα είναι portable o κώδικας στις διάφορες πλατφόρμες, μπορείτε να διαβάσετε λεπτομέρειες σε σχετικό νήμα που είχα ανοίξει στο insomnia, όταν το έψαχνα πρόσφατα... χωρίς πρόσβαση σε POSIX
)
ΥΓ. Μια μικρή σημείωση αν μου επιτρέπεις, το στάνταρ "απαγορεύει" (εντός εισαγωγικών) την χρήση underbar μπροστά από τα ονόματα συναρτήσεων και μεταβλητών, με το σκεπτικό πως είναι reserved για συναρτήσεις ή καθολικές μεταβλητές που ενδέχεται να προστεθούν σε αναθεωρήσεις της γλώσσας (για τον ίδιο λόγο "απαγορεύει" και συναρτήσεις που το όνομά τους ξεκινάει με "str").
ΥΓ. Μια μικρή σημείωση αν μου επιτρέπεις, το στάνταρ "απαγορεύει" (εντός εισαγωγικών) την χρήση underbar μπροστά από τα ονόματα συναρτήσεων και μεταβλητών, με το σκεπτικό πως είναι reserved για συναρτήσεις ή καθολικές μεταβλητές που ενδέχεται να προστεθούν σε αναθεωρήσεις της γλώσσας (για τον ίδιο λόγο "απαγορεύει" και συναρτήσεις που το όνομά τους ξεκινάει με "str").
medigeek έγραψε:Ορίστε κι ένα προγραμματάκι από εμένα για επεξεργασία της ημερομηνίας.
Το κυρίως πρόγραμμα (main) είναι αυτό εδώ: http://www.gnu.org/s/hello/manual/libc/ ... ample.html
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <time.h>
#define SIZE 256
char buffer[SIZE];
int _xdays(time_t rawtime, int days, char sign)
{
/* Get date after / before X days */
struct tm *timeinfo;
timeinfo = localtime(&rawtime);
if (sign == '+') {
timeinfo->tm_mday = timeinfo->tm_mday + days;
sprintf(buffer, "Date after %d days: ", days);
}
else if (sign == '-') {
timeinfo->tm_mday = timeinfo->tm_mday - days;
sprintf(buffer, "Date before %d days: ", days);
}
mktime(timeinfo);
fputs(buffer, stdout);
strftime(buffer, SIZE, "%A, %B %d %Y.\n", timeinfo);
fputs(buffer, stdout);
return 0;
}
int _tomorrow(time_t rawtime)
{
/* Get tomorrow's date */
struct tm *timeinfo;
rawtime = time(NULL);
timeinfo = localtime(&rawtime);
timeinfo->tm_mday = timeinfo->tm_mday + 1;
mktime(timeinfo);
strftime(buffer, SIZE, "Tomorrow will be: %A, %B %d %Y.\n", timeinfo);
fputs(buffer, stdout);
return 0;
}
int _curtime(time_t rawtime)
{
struct tm *loctime;
/* Convert it to local time representation. */
loctime = localtime(&rawtime);
/* Print out the date and time in the standard format. */
fputs(asctime(loctime), stdout);
/* Print it out in a nice format. */
strftime(buffer, SIZE, "Today is %A, %B %d %Y.\n", loctime);
fputs(buffer, stdout);
strftime(buffer, SIZE, "The time is %I:%M %p.\n", loctime);
fputs(buffer, stdout);
return 0;
}
int main()
{
time_t rawtime;
rawtime = time(NULL);
_curtime(rawtime);
_tomorrow(rawtime);
_xdays(rawtime, 30, '+');
return 0;
}