Bin Newbie! if problem



  • Hallo
    Bin ein absoluter newbie in c++ 😕 will es aber lernen! :p
    Habe folgendes problem :

    void name()
    {
    
    	char mName [ 128 ];
    	cout<<"\nVorname der Person von dem die Infos geladen werden sollen:\n";
        cin >> mName;
        cout <<"\nLoading...\n" << mName << "\n...geladen\n";
    	if ( mName=="Henning" )
    	{
    		cout<<"\nName: Henning Pautsch\n";
                      cout<<"...
    
              }  
    
    	else
        {
    		cout<<"\nDiese Perosn ist nicht in unserer Datenbank vorhanden!\n";
    
    	}
    }
    

    Wie schaff ich es das wenn als antwort Henning eingeben wird das das programm dann if ausführt! Bei mir führt es immer else aus? Ich habe mal einen Freund gefragt der sagte was von einem std::string ? was is das!

    Hoffe auf Hilfe
    Danke
    Henning



  • Du prüfst ob die Adresse deines char Arrays und der Konstanten "Henning" gleich sind.

    Sindse aber nicht, daher immer else.

    #include <string>
    void name() 
    { 
    
        std::string mName; 
        cout<<"\nVorname der Person von dem die Infos geladen werden sollen:\n"; 
        cin >> mName;
    // alternativ getline(cin,mName); 
        cout <<"\nLoading...\n" << mName << "\n...geladen\n"; 
        if ( mName=="Henning" ) 
        { 
            cout<<"\nName: Henning Pautsch\n"; 
                      cout<<"...  
              }   
    
        else 
        { 
            cout<<"\nDiese Perosn ist nicht in unserer Datenbank vorhanden!\n"; 
    
        } 
    }
    


  • Probier's ansonsten mal mit "strcmp", der kann auch C- Strings miteinander vergleichen



  • Um es zu komplettieren, was hier schon angeführt wurde:

    #include <iostream>
    #include <string> 
    
    using namespace std; // Namespacedefinition erleichtert das allg. Verständnis
    
    void name()  
    {  
    
        string mName;  
        cout<<"\nVorname der Person von dem die Infos geladen werden sollen:\n";  
        cin >> mName; 
        cout <<"\nLoading...\n" << mName << "\n...geladen\n";  
        if ( mName=="Henning" )  
        {  
            cout<<"\nName: Henning Pautsch\n";  
                      cout<<"...";   
              }    
    
        else  
        {  
            cout<<"\nDiese Perosn ist nicht in unserer Datenbank vorhanden!\n";  
    
        }  
    }
    
    int main()
    {
    // ...
    }
    

    MFG
    #C



  • vielleicht hilf das zum verständnis http://www.c-plusplus.net/forum/viewtopic.php?t=39497



  • Wie schaff ich es das wenn als antwort Henning eingeben wird das das programm dann if ausführt!

    Ich weiss nich, ob der Link das ursprüngliche Threadthema trifft. 😉



  • Benutze im if anstelle des Adressvergleichs

    if ( mName=="Henning" )

    doch
    if (0==strcmp(mName,"Henning") // strcmp vergleicht ob zwei C-Strings gleich sind

    bzw. wenn der Vergleich unabhängig von der Groß/kleinschreibung sein soll (leider ist diese Lösung nicht im Standard enthalten, deswegen muss man eine Compilerspezifische Lösung wählen).

    mit Visual C++
    if (0==_strcmpi(mName,"Henning") // das i steht für ignore case
    mit Borland
    if (0==strcmpi(mName,"Henning")



  • Danke 0==_strcmpi (... funktioniert :p
    Aber wie mach ich jetzt z.B. :

    if (0==_strcmpi (mName,"Henning" ))
    	{
    		cout<<"\nName: Henning Pautsch\n";
    
             }  
    
    	if else (0==_strcmpi (mName,"Michael"));
             {
            cout<<"\nName: Michael Miessen\n"; 
             }
    
             	if else (0==_strcmpi (mName,"Andre"));
    	{
    		cout<<"\nName: Andre Kolrep\n"; 
             }
    
             else
             {
              cout<<"\nDen Namen gibts net!\n";
             }
    

    Doch dann kommt:
    **
    error C2059: Syntaxfehler : 'else'
    error C2059: Syntaxfehler : 'else'
    error C2181: Ungueltiges 'else' ohne zugehoeriges 'if'
    **

    Sehr schnelle Antwort klasse hier!
    Hoffe auf Hilfe
    Danke Henning



  • es sollte heißen:

    else if
    

    übrigens, ';' nach den bedingung solltest du lieber nicht schreiben, das hat nämlich zur folge, dass die folgenden anweisungen in {} nicht nach dem if sondern immer ausgeführt werden:

    void foo (int i) {
      if (i < 10); //<- hier nie ein ';'
      {
         cout << "i < 10\n";
      }
    }
    //hat zur folge, dass immer i < 10 ausgegeben wird, auch wenn i = 100 ist
    


  • DANKE!
    tuts !echt klasse hier
    Schnelle antworten gut zu verstehen!


Anmelden zum Antworten