Eingabe auf Wörter prüfen



  • Hi, ich würde gerne bei meinem Programm die Eingabe vom User auf Wörter prüfen, wie z.B. wenn er "exit" eingibt, dass das Programm beendet wird. Ich habe es nur geschafft einzelne Buchstaben zu prüfen. 😉

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    #include <ctype.h>
    #include <string.h>
    
    int main() {
    	char eingabe,satz[301];
    	int zahl, exit;
    	printf("\n\t	 ***");
    	printf("\n\t	 ***");
    	printf("\n\t     ***********");
    	printf("\n\t     ***********");
    	printf("\n\t	 ***");
    	printf("\n\t	 ***\n");
    	printf("\n\t     P s y c h o  X\n\n");
    
    	//******************************************************************
    
    	srand((unsigned)time(NULL));
    	printf("Weiter mit 'w', oder eine andere Taste zum beenden:\n\n");
    	eingabe=getchar();
    
    	//******************************************************************
    
    	switch(toupper(eingabe)) {
    		case 'W': {
    			eingabe=getchar();
    			while(satz[0] != 'Q') {
    			zahl =(double)rand()/RAND_MAX * 10 + 0.5;
    			printf("\nBitte beschreiben Sie Ihr Problem:\n");
    			gets(satz);
    			if (zahl == 1)
    				printf("\nHm ...\n\n");
    			else if (zahl == 2)
    				printf("\nDas ist ein Ding!\n\n");
    			else if (zahl == 3)
    				printf("\nSieh mal an!\n\n");
    			else if (zahl == 4)
    				printf("\nWas soll ich sagen?\n\n");
    			else if (zahl == 5)
    				printf("\nTatsaechlich?\n\n");
    			else if (zahl == 6)
    				printf("\nSo geht es dir also.\n\n");
    			else if (zahl == 7)
    				printf("\nDu hast Probleme.\n\n");
    			else if (zahl == 8)
    				printf("\nDas kann ich verstehen.\n\n");
    			else if (zahl == 9)
    				printf("\nIch bin sprachlos!\n\n");
    			else if (zahl == 10)
    				printf("\nNa ja ...\n\n");		
    			else if (zahl > 10)
    				printf("\nDas ist schlecht.\n\n");
    			else if (zahl < 1)
    				printf("\nDas ist schlecht.\n\n");
    		}		
    	}
    
    	default:
    		break;
    }
    
    	//******************************************************************
    
    	return 0;
    }
    


  • Das sollte helfen:
    http://www.c-plusplus.net/forum/viewtopic.php?t=62001

    Stand ca. 6 Einträge unter deinem 🤡



  • @Alexander
    Warum nimmst du beim Überprüfen von zahl nicht auch einen switch() ?? Diese if else if ... Konstruktion schaut ja grauenhaft aus! 😮



  • Sorry, aber kann mir das bitte noch mal jemand an meinem Beispiel zeigen? 😕



  • An deinem Beispiel kann man das schlecht zeigen, weil du keine Wörter zum Vergleichen hast. Beschreib doch mal was du genau machen willst.



  • Das Programm soll sich wenn man bei "gets(satz);" "exit" eingibt, beenden.



  • Ok, hier das Beispiel:

    #define MAX_BEFEHLE 1
    
    char eingabe[100]; 
    ... 
    gets(eingabe);
    
    switch(parse(eingabe)) 
    { 
       case -1: 
          printf("Unbekanntes Kommando"); 
          break; 
       case 0: 
          exit(0); 
          break; 
    } 
    ... 
    int parse(char *eingabe) 
    { 
       char befehle[MAX_BEFEHLE][]={"exit"}; 
       int i; 
    
       for(i=0;i<MAX_BEFEHLE;++i) 
       { 
          if(!strncmp(befehle[i], eingabe, strlen(befehle[i])) 
          { 
             return(i); 
          } 
       } 
       return(-1); 
    }
    

Anmelden zum Antworten