Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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 :D

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? :/

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?

  • Autor

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:

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.