Artery Geschrieben 24. August 2010 Teilen Geschrieben 24. August 2010 Hallo leute, ich bin noch ganz neu in C! Ich habe jetzt schon wirklich über eine Stunde danach gesucht und leider nicht ganz die Antwort gefunden, die ich mir erhofft habe, obwohl das Problem wirklich keins ist Also es soll so sein, jemand gibt etwas ein ein oder zwei Wörter. Dann soll per scanf das/die Wörter in einer variable gespeichert werden und dann wird per If abgefragt, wenn die variable dann nicht eines der 3 wörter ist soll etwas passieren... Ich habs bisher so... #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char ziel; printf("Wilkommen zum Bezinrechner 1.0\n"); printf("Geben sie nun zu erst ein welchen Wer Sie errechnen wollen\n\n"); printf("\n'Strecke' um die Zurueckgelegte Strecke aus Durschnittsverbrauch und \nverbrauchter Bezinmenge zu errechnen\n"); printf("\n'Durschnittsverbrauch' um den Durschnittsverbrauch aus zurueckgelegter Strecke \nund verbrauchter Bezinmenge zu errechnen\n"); printf("\n'verbrauchte Benzinmenge' um die verbrauchte Benzinmenge aus zurueckgelegter \nStrecke und Durschnittsverbrauch zu errechnen\n\n"); scanf("%c", &ziel); if(ziel != "Strecke" || ziel != "Durschnittsverbrauch" || ziel != "verbrauchte Benzinmenge") printf("Geben Sie einen 'richtigen' Befehl ein!\n\n"); else if(ziel == "S") printf("1"); system("PAUSE"); return 0; } Wäre nett wenn ihr mir weiter helft! MfG Artery €dit: Wieso wird mein Profilbild nicht angezeigt? :/ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 24. August 2010 Teilen Geschrieben 24. August 2010 char ziel;Der Datentyp char bietet Platz für genau 1 Zeichen. So etwas wie "Durschnittsverbrauch" passt da also gar nicht hinein. In C werden für Zeichenketten (Strings) Arrays von char benutzt, wobei du darauf achten musst, dass das Array groß genug ist: Die Größe muss mindestens die Anzahl der zu speichernden Zeichen + 1 sein. +1 deswegen, weil immer eine Endmarkierung dazugepackt wird. Arrays lassen sich nämlich nicht an Funktionen übergeben, sie degenerieren dann zu Zeigern auf das erste Element, und diese Zeiger tragen nicht mehr die Information in sich, wie groß das Array war. Darum muss das Ende des Strings markiert werden. Alle Stringfunktionen in C erwarten diese Markierung und setzen sie üblicherweise auch selbst. Du musst also statt eines einzelnen char ein hinreichend großes char-Array benutzen. Die Eingabe mit scanf erfolgt dann mit %s. Und du kannst Strings in C auch nicht mit == oder != vergleichen. Das heißt, du kannst es tun, aber dabei werden nicht die Zeichenketten verglichen, sondern nur die Speicheradressen. Strings vergleicht man in C mit der Funktion strcmp. Und noch eins: if(ziel != "Strecke" || ziel != "Durschnittsverbrauch" || ziel != "verbrauchte Benzinmenge") Von allen oben angesprochenen Punkten abgesehen, ist diese Abfrage immer wahr. Du verknüpfst hier mehrere Teilbedingungen mit ODER. Es reicht also, wenn eine einzige wahr wird, damit der gesamte Ausdruck wahr wird. Wenn ziel nicht "Strecke" ist, ist die erste Teilbedingung wahr. Und wenn ziel "Strecke" ist, ist zwar die erste falsch, aber die zweite ist wahr. Die dritte muss gar nicht mehr geprüft werden, weil mindestens eine der ersten beiden Teilbedingungen immer wahr ist. Was du meinst, ist:if(ziel != "Strecke" [B]&&[/B] ziel != "Durschnittsverbrauch" [B]&&[/B] ziel != "verbrauchte Benzinmenge") €dit: Wieso wird mein Profilbild nicht angezeigt? :/ Dein Profilbild wird in deinem Profil angezeigt. Meintest du vielleicht dein Benutzerbild? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artery Geschrieben 24. August 2010 Autor Teilen Geschrieben 24. August 2010 Okay danke es klappt das mit dme abspeichern in "Strings" Das mit dem Or war ein denkfehler Aber das mit der Funktion zum vergleichen von strings habe ich noch nicht ganz verstanden... Könntest du mir bitte das richtige beispiel für mein problem mal geben, das wäre äußerst hilfreich =) MfG Artery PS: Wieso wird mein Avatar nicht angezeigt? D: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 24. August 2010 Teilen Geschrieben 24. August 2010 if(strcmp(ziel,"Strecke")!=0 && ... PS: Wieso wird mein Avatar nicht angezeigt? D:Du hast nur ein Profilbild hochgeladen. Das wird in deinem Profil angezeigt. Wenn neben deinen Beiträgen ein Bild erscheinen soll, musst du ein Benutzerbild hochladen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artery Geschrieben 25. August 2010 Autor Teilen Geschrieben 25. August 2010 Okay hat jetzt alles funktioniert!! Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.