Problem mit Eingabenabfrage



  • Hi,

    ich habe ein Programm geschrieben um das Starten eines HalfLife Dedicated Server zu vereinfachen, aber immer wenn man etwas bei der Ersten Eingabe (inet oder lan, siehe code) eingibt, springt er immer in die If Anweisung, egal was man eingibt. Ist bestimmt nur ein Anfängerfehler, das weis bestimmt jemand.
    thx

    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    
    char var[100];
    char mod[100];
    char map[100];
    char ent;
    int slot;
    int y=0;
    
    void senden(char var[]);
    void createlan();
    void createinet();
    int neu();
    
    int main()
    {
    
    	char select;
    
    		printf("HL Server Tool\n--------------\n");
    		printf("(I)NET oder (L)AN? ");
    		scanf("%s", &select );
    
    			if(select!='i'||select!='I'||select!='l'||select!='L'||select>=0||select<=0) //Hier springt er immer rein, egal was man eingibt
    			{
    				system("cls");
    				printf("\n\n\tFalsche Eingabe!\n\tBitte I fuer einen InternetServer\n\tund L fuer einen LanServer eingeben!");
    				getch();
    				system("cls");
    				return main(); 
    			} 
    
    			if(select=='i'||select=='I')
    				createinet();
    
    			if(select=='l'||select=='L')
    				createlan();
    
    			neu();
    
    }
    
    void createlan()
    {
    	printf("\n\t Dedicated LanServer\n");
    	printf("\n\tMod: ");
    	scanf("%s", &mod );
    	printf("\tSlot: ");
    	scanf("%d", &slot);
    	printf("\tMap: ");
    	scanf("%s", &map);
    	printf("\tServer wird gestartet...\n\n");
    	sprintf( var, "hlds.exe -game %s -console -insecure -nomaster +sv_lan 1 +maxplayers %d +map %s\n", mod,slot,map );
    
    	senden(var);
    }
    
    void createinet()
    {
    	printf("\n\t Dedicated InternetServer\n");
    	printf("\n\tMod: ");
    	scanf("%s", &mod );
    	printf("\tSlot: ");
    	scanf("%d", &slot);
    	printf("\tMap: ");
    	scanf("%s", &map);
    	printf("\t Server wird gestartet...\n\n");
    	sprintf( var, "hlds.exe -game %s -console +maxplayers %d +map %s\n", mod,slot,map );
    
    	senden(var);
    }
    
    int neu()
    {
    	system("cls");
    	printf("\n\n\tEinen neuen Server erstellen? (j/n) ");
    	scanf("%s", &ent);
    
    	if(ent=='j'||ent=='J')
    	{	
    		system("cls");
    		return main();	
    	}
    
    	if(ent=='n'||ent=='N')
    		return 0;
    
    	if(ent!='n'||ent!='N'||ent!='j'||ent!='J'||ent>=0||ent<=0)
    		return neu();
    }
    
    void senden(char var[])
    {
    
    			system( var );  
    
    }
    


  • if(...|| select>=0 || select<=0 )
    

    eine dieser beiden Bedingungen ist auf jeden Fall erfüllt - also trifft die Bedingung zu.



  • Ich hab eben beide Bedingungen entfernt, und das Problem besteht weiterhin..



  • Es ist ja auch immernoch logisch falsch, z.b. if (select!="I"||select!="i") ist bei jedem i was man eingibt erfüllt, da bei einem "i" die erste Bedingung wahr, und somit der Gesamtausdruck wahr ist..



  • vielleicht solltest du statt || (oder) lieber && (und) verwenden 😉



  • ja klar ihr habt recht 😉
    so funzts natürlich

    thx problem gelöst


Anmelden zum Antworten