Ich arbeite an einer Funktion, wo ich Parameter von Benutzern erhalte, herausfinden, was der erste Tag von dieser Woche ist und dann die ganze Woche für den Benutzer ausdrucken.Wie bekomme ich den ersten Wochentag von den angegebenen Parametern und drucke die ganze Woche von Montag bis Sonntag?
Das ist, was ich bisher getan habe:
#include <time.h>
#include <stdio.h>
void week(int day, int month, int year)
{
struct tm time;
char buffer[80];
int i;
time.tm_year = year - 1900;
time.tm_mon = month - 1;
time.tm_mday = day;
time_t rightTime = mktime(&time);
time.tm_wday = rightTime;
time.tm_wday = mktime(&time);
for (i = 0; i < 7; i++)
{
strftime(buffer, sizeof(buffer), "%A %d. %B %Y\n",&time);
printf(buffer);
time.tm_mday = time.tm_mday + 1;
time.tm_wday = time.tm_wday + 1;
}
}
dann mit dem Code zu experimentieren begann ich ersten Tag der Woche zu bekommen. Ich habe versucht, den ersten Tag der Woche zu ermitteln, indem ich den Wochentag und dann minus alle Tage bis zum Montag festlege. Dann kann ich die gesamte Woche von Montag bis Sonntag drucken. Beispiel wenn wday Samstag (6):
if(rightTime == 6)
{
time.tm_mday = time.tm_mday - 6;
}
time.tm_wday = mktime(&time);
Es ist noch nicht die richtige Art und Weise fühlen, aber ich kann nicht herausfinden, wie man den ersten Tag dieser Woche gegeben, um herauszufinden, aktualisieren Sie alle Informationen, und dann drucken es für den Benutzer aus.
Recht ausgegeben, wenn Parameter für Tag, Monat und Jahr zum Beispiel 20 4 2017 wären:
Monday 17. April 2017
Tuesday 18. April 2017
Wednesday 19. April 2017
Thursday 20. April 2017
Friday 21. April 2017
Saturday 22. April 2017
Sunday 23. April 2017
Alle Hilfe ist willkommen!
Bitte setzen Sie sich nicht in die Gewohnheit Variablen als Format-String zugeben - verwenden 'printf ("% s", Puffer)' statt - das wird rette deine Haut eines Tages.(In diesem Fall können Sie den Zeilenumbruch aus der Zeichenfolge entfernen und einfach 'puts (puffern)', was ebenfalls sicher und wahrscheinlich effizienter ist.) –