Gesprächspartner
-
ich versuche einen kleinen gesprächspartner zu programmieren.
allerdings weiß ich nicht wie ich anstatt zahlen wörter einsetzen kann:
#include <stdio.h> int main() { float a; while(1) { scanf("%g",&a); if ( a == Hallo ) { printf("Hallo!\n"); } if (a == Name ) { printf("Ich heisse Dennis.\n"); } } return; }
mfg C-Progger
-
Hi,
benutze bitte von nun an die Code Tags.
Sieht doch viel schöner aus:#include <stdio.h> #include <stdlib.h> int main() { char str[256] = {0}; //Eine Zeichekette scanf("%s",str); //%s heißt: hier kommt ne Zeichekette if (!strcmp("Hallo", str)) //strings werden mit strcmp verglichen printf("Hallo!\n"); if (!strcmp("Name",str)) printf("Ich heisse Dennis.\n"); return 0; //Besser einen Wert zurückgeben } Beachte, dass strcmp eine Null zurückgibt wenn beide Strings GLEICH sind.
Achso, wenn der Compiler meckert, nimm einfach die //Kommentare raus.
Viel Spaß noch.
-
@SeppSchrot,
mist wast etwas schneller
Wie willst du eigendlich strcmp in switch/case verwenden?
switch/case funktioniert doch nur mit Zahlenwerten.
-
Yo Hermann,
deswegen tippe ich sowas immer erst in einem Extra Editor und aktualisiere nochmal bevor ich posteDas mit dem switch war natürlich blödsinn.
Bin wieder in blinden Aufräumwahn verfallen, als ich die Weiterentwicklung mit 100 if Abragen vor meinem geistigen Auge gesehen habe.Vermutlich wäre was in der Richtung
char str[2][256]={"Hallo", "Name"}; besser, wenn noch viele Wörter dazukommen.
-
schonmal danke für die schnellen antworten.
es kommt immer die meldung:
if (!strcmp("Hallo", str))
missing prototyp for strcmp
-
@SeppSchrot,
ich habe gerade auf Arbeit damit zu kämpfen. Eigene Konfigurationsdatei mit vielen verschiedenen Eigenschaften (left,top,width,height,right,color,...). Der Vergleichsblock nimmt im Moment knapp 80 Zeilen ein. Eine bessere Methode habe ich leider noch nicht gefunden. Das ganze sieht dann auch so aus:... if ( !strcmp( pName, "left" ) ) Set( &m_iLeft, pValue, TYPE_INT ); else if ( !strcmp( pName, "top" ) ) Set( &m_iTop, pValue, TYPE_INT ); ... ...
-
@CProgger,
du musst für strcmp die string.h einbinden:#include <string.h>
-
ok. jetzt klappt alles.
danke für die hilfe
-
Herrmann schrieb:
Der Vergleichsblock nimmt im Moment knapp 80 Zeilen ein. Eine bessere Methode habe ich leider noch nicht gefunden. Das ganze sieht dann auch so aus:
... if ( !strcmp( pName, "left" ) ) Set( &m_iLeft, pValue, TYPE_INT ); else if ( !strcmp( pName, "top" ) ) Set( &m_iTop, pValue, TYPE_INT ); ... ...
man kann z.b. ein char* array nehmen mit allen wörtern drin und eine funktion, die ein wort sucht und wenn gefunden den index zurückliefert (wenn nicht gefunden -1 oder so). diesen wert kannste dann mit siwtch/case weiterverarbeiten