Zum Inhalt springen

lexikalischer Vergleich


Metalmind

Empfohlene Beiträge

Moin,

ich habe eine if Bedingung, in der ich 2 lexikalische Vergleiche durchführen möchte:

char Bedingung1;

char Bedingung2;

if(((strcmp(Bedingung1,"Wort"))==0)&&((strcmp(Bedingung2,"Tat"))==0)){

...

}

Nun bekomme ich bei diesem Vergleich den Fehler:

warning: passing arg 1 of `strcmp' makes pointer from integer without a cast

Könnte mir bitte jemand sagen was dieser Fehler bedeutet (und warum dort "warning" und nicht "error" steht wie normalerweise) und wie ich ihn lösen kann?

Vielen Dank und Gruß

Metalmind

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könnte mir bitte jemand sagen was dieser Fehler bedeutet
strcmp vergleicht zwei nullterminierte Zeichenketten, die als char-Zeiger übergeben werden. Bedingung1 und Bedingung2 sind aber keine Zeichenketten, sondern nur einzelne Zeichen. Und bevor du jetzt auf die Idee kommst, die Adresse deiner char-Variablen zu übergeben: Dann hast du immer noch keine Nullterminierung.

Für Zeichenketten brauchst du char-Arrays.

(und warum dort "warning" und nicht "error" steht wie normalerweise) und wie ich ihn lösen kann?
Einen Fehler meldet der Compiler immer dann, wenn er etwas nicht übersetzen kann.

Laut C-Standard sind Ganzzahldatentypen (denn ein solcher ist char) implizit in jeden Zeigertyp konvertierbar. Übersetzen ließe sich das also, aber dabei kommt praktisch nie etwas Sinnvolles heraus, daher tut dir der Compilerhersteller mit der Warnung einen Gefallen. Dieser Code wird dir nämlich mit an Sicherheit grenzender Wahrscheinlichkeit um die Ohren fliegen, weil bei dieser Konvertierung kein gültiger Zeiger herauskommt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also würde:

char Bedingung1[4];

char Bedingung2[3];

if(((strcmp(Bedingung1,"Wort"))==0)&&((strcmp(Bedi ngung2,"Tat"))==0)){

...

}

funktionieren?

strcmp vergleicht zwei nullterminierte Zeichenketten, die als char-Zeiger übergeben werden.

Sehe ich das richtig dass ich keine Zeiger-Arrays erstellen muss, sondern diese vom Programm nur übergeben werden?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also würde:

char Bedingung1[4];

char Bedingung2[3];

if(((strcmp(Bedingung1,"Wort"))==0)&&((strcmp(Bedi ngung2,"Tat"))==0)){

...

}

funktionieren?

Grundsätzlich ja. Es sollte aber etwas in den Arrays drinstehen. So kann dabei nichts Sinnvolles herauskommen.

Außerdem sind die Arrays für das, mit dem sie verglichen werden sollen, zu klein. Du brauchst immer ein Arrayelement mehr für das Nullbyte, das das Ende des Strings markiert.

Sehe ich das richtig dass ich keine Zeiger-Arrays erstellen muss, sondern diese vom Programm nur übergeben werden?
Kommt darauf an, was du womit vergleichen willst. Dem Programm werden nur die Kommandozeilenparameter übergeben, mit denen es aufgerufen wurde.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Meine Eingabe habe ich mir so gedacht:

scanf("%s",&Bedingung1);

scanf("%s",&Bedingung2);

Ich würde gerne versuchen die Variablen vom Programm beschreiben zu lassen, im Sinne von:

Bedingung1="Wort";

Gibt es dafür eine Möglichkeit? Die von mir genannte ist es wahrscheinlich nicht :hells:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...