zwei chars miteinander vergleichen und dann if/else abfrage...



  • hallo,

    ich habe zwei char´s die zumindest in meiner messagebox ausgabe gleich erscheinen. nun mochte ich gerne, dass bei gleichheit in die if-schleife gesprungen wird und andernfalls in else. leider klappt das alles nicht.
    wer weiss warum mein vergleich immer 1 oder mehr ergibt (wie kann ich das überhaupt ausgeben? (Bei OutputDebugString ergebnis; gibts fehler)? wie vergleiche ich die beiden char´s dass ich ein true oder false rausbekomme?

    // wenn szFileName name gleich dem gewünschten exeregname dann kopiere nicht!
    int ergebnis = 0;
    ergebnis = (szFileName - exeregname);
    //OutputDebugString ergebnis;
    // MessageBox(NULL, ergebnis, TEXT("Pfad:"), MB_OK | MB_ICONINFORMATION);
    
    if (ergebnis = 1)
    {
    OutputDebugString("kopiere NICHT !!!! ");
    
    //return 0;
    }
    
    // andernfalls kopiervorgang:
    else
    {
    // Quelldatei einlesen
    ifstream FileInCopy(szOwnPath, ios::binary);
    OutputDebugString("                         kopiere .....  VON                        ");
    OutputDebugString(szOwnPath);
    MessageBox(NULL, szFileName, TEXT("Pfad:"), MB_OK | MB_ICONINFORMATION);
    // Zieldatei schreiben 
    ofstream FileOutCopy(szPath, ios::binary);
    OutputDebugString("                         kopiere .....    ZIEL                      ");
    OutputDebugString(szPath);
    MessageBox(NULL, exeregname, TEXT("Pfad:"), MB_OK | MB_ICONINFORMATION);
    if (FileInCopy)
        FileOutCopy << FileInCopy.rdbuf();
    //return 0;
    }
    return 0;
    




  • wx++ schrieb:

    if (ergebnis = 1)
    

    http://www.highscore.de/cpp/einfuehrung/operatoren.html#vergleich

    im eifer des gefechtes ... natürlich == aber dennoch klappts nicht.
    daran lag es nicht das meine schleife nicht funktioniert 😞
    kann man chars überhaupt so subtrahieren wie ich das das mache ?



  • also ich sehe da gar keine schleife...

    ich glaube dein fehler ist es, dass szFileName lediglich ein char-zeiger ist, mit dem dann herumgerechnet wird. schau dir mal die funktion strcmp an:
    http://www.cplusplus.com/reference/clibrary/cstring/strcmp/



  • daersc schrieb:

    also ich sehe da gar keine schleife...

    ich glaube dein fehler ist es, dass szFileName lediglich ein char-zeiger ist, mit dem dann herumgerechnet wird. schau dir mal die funktion strcmp an:
    http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

    danke habs auch gerade rausgefunden gehabt ... das mit dem zeiger ist hier zwar nicht zutreffen bzw funktioniert ein simples -> ergebnis = strcmp(szFileName, exeregname) ...

    dennoch ist die antwort auf deine vermutung interessant -> wenn ich einen pointer auf einen char habe, wie bekomme ich da eigentlich einen char draus ?



  • WhiteLion schrieb:

    dennoch ist die antwort auf deine vermutung interessant -> wenn ich einen pointer auf einen char habe, wie bekomme ich da eigentlich einen char draus ?

    char const *foo = "hallo";
    
    *foo == 'h';
    foo[0] == 'h';
    

Anmelden zum Antworten