Verknüpfte Wenn Bedingung Frage:
-
Sloenig schrieb:
mit dem Vergleichsoperator == kannst du unter C keine Strings vergleichen. Das musst du mit entsprechenden Funktionen machen
au backe wie dumm von mir... ich muss die Strings ja vergleichen und nicht den == Operator verwenden...
"blamage" -.-
Edit :
So nun funktioniert es... zwar nicht richtig (so wie ich es hier jetzt reinkopieren werde) aber naja... ich versteh nicht warum wenn ich value hex eingeben als Current set dann bin kommt und bei value bin dann hex... für mich ist die Bedingung richtig so...
printf("value [dual|hex|bin]: Current set=%s\n", strcmp(_value, "bin") ? "bin" : (strcmp(_value, "hex") ? "hex" : "dual" ) );
klar könnt ich jetzt einfach wo hex steht bin schreiben und umgekährt ich möchte es aber auch verstehen ...
Edit 2:
quaTch es geht nicht... garnicht... standart ist irgendwie bin... gebe ich hex ein kommt bin gebe ich bin ein kommt hex gebe ich dual ein kommt was ganz anderes...
hm...
hier mal die ganze sache zum verständniss:
else if ( !strnicmp("value", term, 5) && ( term[5] == ' ' || term[5] == '\0' ) ) { char toggle[64]; int ret = sscanf(term, "value %s", toggle ); if ( ret == -1 ) printf("value [dual|hex|bin]: Current set=%s\n", (strcmp(_value, "bin") ? "bin" : (strcmp(_value, "hex") ? "hex" : "dual" ) ) ); else if ( !stricmp("hex", toggle ) ) strcpy ( _value, "hex"); else if ( !stricmp("bin", toggle ) ) strcpy ( _value, "bin"); else printf("Possible options: dual / hex / bin\n");
-
Was gibt strcmp() denn zurück wenn s1 und s2 gleich sind?
PS: Ich würde das ja nicht so mit Gewalt in eine Zeile quetschen
-
Tim schrieb:
Was gibt strcmp() denn zurück wenn s1 und s2 gleich sind?
PS: Ich würde das ja nicht so mit Gewalt in eine Zeile quetschen
Gut überredet ... habs jetzt "lang" gemacht:
if ( ret == -1 ) { if( strcmp(_value, "dual") ) printf("value [dual|hex|bin]: Current set=%s\n", _value); else if ( strcmp(_value, "hex") ) printf("value [dual|hex|bin]: Current set=%s\n", _value); else if ( strcmp(_value, "bin") ) printf("value [dual|hex|bin]: Current set=%s\n", _value); }
strcmp gibt zurück ob der vergleich von 1 und 2 größer kleiner oder identisch ist soweit ich das versteh
gruß und danke trotzdem
-
edit: Ich schlage meinen Kopf gegen die Wand.
-
Virokams schrieb:
Gut überredet ... habs jetzt "lang" gemacht:
if ( ret == -1 ) { if( strcmp(_value, "dual") ) printf("value [dual|hex|bin]: Current set=%s\n", _value); else if ( strcmp(_value, "hex") ) printf("value [dual|hex|bin]: Current set=%s\n", _value); else if ( strcmp(_value, "bin") ) printf("value [dual|hex|bin]: Current set=%s\n", _value); }
aber dafür 3 mal die selbe zeile drin. mach's doch ungefähr so:
if (0 == strcmp(...) || 0 == strcmp(...) || 0 == strcmp(...)) printf (...);
-
Wofür überhaupt eine Abfrage?
Du gibts doch eh das aus was drin steht...
-
Karlchen1234 schrieb:
Wofür überhaupt eine Abfrage?
Du gibts doch eh das aus was drin steht...
Das stimmt allerdings (
), aber vielleicht will er ja im Anschluss noch mehr machen.
-
Karlchen1234 schrieb:
Wofür überhaupt eine Abfrage?
vielleicht, damit irgendwas anderes als dual/hex/bin unterdrückt wird?
-
Tim schrieb:
edit: Ich schlage meinen Kopf gegen die Wand.
was ist denn mit dir los?
-
~fricky schrieb:
Tim schrieb:
edit: Ich schlage meinen Kopf gegen die Wand.
was ist denn mit dir los?
Ich habe Mist geschrieben und will mich selbst bestrafen.
-
also im Grunde wird an der stelle _value halt auf dual,hex oder bin gesetzt weil ich dann nachher dem User die möglichkeit geben möchte seine ausgabe selbst zu bestimmen... er gibt zB. bin(10110) ein möchte aber nicht die dualzahl sondern die ausgabe in Hex haben... so setzt er dann vorher value auf hex und kriegt jedes Ergebnis immer in Hex geliefert...
so ist jedenfals der Plan XD
-
Tim schrieb:
Ich habe Mist geschrieben und will mich selbst bestrafen.
deine antwort war doch ganz ok. er hat erstmal den rückgabewert von strcmp nicht mit 0 verglichen und die printf-zeile, gleich in dreifacher ausführung, sieht doch auch doof aus.