Herausfinden, ob es Wochenende ist
-
Hallo zusammen,
ich bin C-Laie und benötige einen Code, mir dem ich herausfinden kann, ob Wochenende ist oder nicht. Dazu will ich mir den Wochentag ausgeben lassen (dazu habe ich unter http://www.c-plusplus.net/forum/viewtopic-var-p-is-284434.html was gefunden).
Nun würde ich das Ergebnis gerne in einer if-Abfrage mit den Werten "Saturday" und "Sunday" vergleichen. Aber das geht nicht so einfach, wie ich mir das vorstelle, da es sich bei der Variable "woche" um einen Pointer handelt. Ich habe nach einer Google-Recherche probiert den Wert mittels void variable(char *pointer) auf eine variable zu übertragen, aber das klappt leider nicht.
Ich wäre sehr dankbar, wenn mir jemand erklären würde, wie ich das mache.
soweit bin ich:#include <stdio.h> #include <time.h> int main(void) { time_t datum; struct tm *tmzgr; char woche[30]; datum = time(NULL); tmzgr = localtime(&datum); strftime(woche,30,"%A",tmzgr); void wochentag(char *woche); printf("Der Wochentag fuer heute ist %s\n",woche); if (wochentag=='Sunday') {printf("Wochenende");} return 0; }
Danke und Gruß,
boludo
-
zum vergleichen von strings brauchst du den befehl
int strcmp(s1,s2);
die funktion liefert eine vergleich der beiden strings.
==0 bedeutet s1==s2
<0 s1 < 20 s1 > s2
wobei sich das größer auf die position im verwendeten zeichensatz bezieht.
also bswp 'L' ist kleiner als 'l'.if (strcmp(wochentag,"Sunday")==0) { printf("Wochenende"); }
-
Sollte Sunday nicht in Gänsefüßchen stehen?
-
äh ja. sollte es. (habs in meinem code gerade geändert. kommt davon, wenn man copy-paste macht und nicht selber schreibt.
)
-
Warum mußt du überhaupt auf String-Ebene vergleichen? Mit Zahlen macht sich das doch viel einfacher. Nach dem localtime() Aufruf steht in *tmzgr das aufgeschlüsselte Datum, da brauchst du nur die richtigen Werte rauszuziehen:
tmzgr = localtime(&datum); if(tmzgr->tm_wday==0/*Sonntag*/ || tmzgr->tm_wday==6/*Samstag*/ printf("Wochenende\n");
Übrigens hast du nirgends den Wochentag berechnet - du hast im Code nur eine lokale Funktion namens 'wochentag()' deklariert.
-
Vielen Dank für die Antworten. Die letzte Variante passt perfekt - je einfacher desto besser
Zum letzten Kommentar: Ich wollte nie den Wochentag berechnen. Ich wollte nur den Inhalt des Pointers in einer Variable hinterlegen und hatte gelesen, dass man das so machen kann. Oder habe ich jetzt was falsch verstanden?
-
boludo2 schrieb:
Zum letzten Kommentar: Ich wollte nie den Wochentag berechnen. Ich wollte nur den Inhalt des Pointers in einer Variable hinterlegen und hatte gelesen, dass man das so machen kann. Oder habe ich jetzt was falsch verstanden?
Ja, vermutlich. Der Ausdruck
void wochentag(char*woche);
deklariert eine Funktion (die einen char* entgegennimmt und nichts zurückgibt). Für eine Kopie des Inhalts hättest du das 'char*' weglassen müssen - aber eine void-Variable ist nicht erlaubt
-
ghorst schrieb:
äh ja. sollte es. (habs in meinem code gerade geändert...)
und das sollte man tunlichst vermeiden, es macht das Lesen
und Verstehen eines Threads unmöglich.Besser wäre es, die Änderungen speziell mit dem Wort
"Edit:" zu versehen, oder lieber eine neues Posting zu machen.