Hallo ich möchte eine Zeichenkette so vergleichen: void Tage (void){ if (pText == "Montag" && loop == 23){ (pText = "Dienstag");} if (pText == "Dienstag" && loop == 23){ (pText = "Mittwoch");} if (pText == "Mittwoch" && loop == 23){ (pText = "Donnerstag");} if (pText == "Donnerstag" && loop == 23){ (pText = "Freitag");} if (pText == "Freitag" && loop == 23){ (pText = "Samstag");} if (pText == " Samstag" && loop == 23){ (pText = "Sonntag");} if (pText == "Sonntag" && loop == 23){ (pText = "Montag");} } loop wird in einer anderen Funktion inc, am Anfang des Programms ist pText mit Montag init und wenn 23 erreicht wieder auf 0 gesetzt. Geht das so überhaupt??? Danke Gruss Frank
Ich nehme mal an, daß es sich um C handelt und pText vom Typ const char* ist. Dann geht das so offiziell nicht, obwohl es unter Umständen funktionieren kann. Du machst keinen Stringvergleich, sondern einen Zeigervergleich. Du solltest strcmp o.ä. verwenden. Ein weiteres Problem ist, daß deine if-Abfragen alle gleichzeitig zutreffen würden. Wenn die erste zutrifft, wird der String auf "Dienstag" gesetzt, woraufhin die Bedinung für's zweite if auch zutrifft, u.s.w., also ist am Ende der String wieder auf "Montag" gesetzt. Du müßtest ein else dazwischen tun. Außerdem könntest du die Prüfung auf loop == 23 rausnehmen, so daß sie nicht immer wiederholt wird. Das würde dann etwa so aussehen: void Tage(void) { if (loop == 23) { if (strcmp(pText, "Montag") == 0) pText = "Dienstag"; else if (strcmp(pText, "Dienstag") == 0) pText = "Mittwoch"; // ... } }
Nein, das geht nicht. pText == "Montag" vergleicht nur zwei Pointer, nicht aber den Inhalt der Speicherbereiche, auf die die Pointer zeigen. Für Dich besser geeignet ist die Bibliotheksfunktion strcmp() oder stricmp(). Letztere ignoriert Groß-/Kleinschreibung. Der Rückgabewert der Funktion ist 0, wenn beide Argumente gleich sind. Also: if (!strcmp(pText, "Montag) && loop == 23) Wenn es Dir nur darum geht, den folgenden Wochentag zu bestimmen, ist es IMHO sinnvoller, nicht einen Textstring mit dem Namen des Wochentags zu verwenden, sondern eine int-Variable, die von 0 (Montag) bis 6 (Sonntag) zählt. Dann ist das nämlich nur eine einfache Addition und ein Wertebereichsvergleich ...
Danke für die Antworten! ich habe es wie Rufus gesagt hat eine int Variable genommen die inc wird und dann dem Tag zugeordnet wird. Funzt prima! Ich denke immer viel zu kompliziert!!! Danke Frank
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.