String vergleichen



  • Hallo

    (wahrscheinlich gehört diese Thema in Ansi-C, aber das erstellen von neuen Themen in diesem Forum funktioniert nicht)

    Mein Problem:

    1. Ich lese aus einem Textfile eine Zeile in eine Variable s3
    2. Ich prüfen den aktuellen Benutzernamen mit GetUserName (=USERID1)
    3. Ich vergleiche s3 mit USERID1

    aber --> Der Vergleich funktioniert nicht, wahrscheinlich weil ich in s3 einen Zeilenumburch drin habe und USERID1 nicht.

    Frage : wie bekomme ich das in den Griff ????

    Beispiel:

    char s3[256]={'\n'};
    FILE *f;

    f = fopen ("test.txt", "r");
    fgets (s3, 256, f);
    fclose (f);

    char USERID1[256]={'\n'} ;
    DWORD nSize;
    nSize = sizeof(USERID1);
    GetUserName(USERID1, &nSize);

    int result ;
    result = strcmp(s4,USERID1);

    Gruss und Dank
    romu



  • ...weil Du s4 mit der UserID vergleichst und nicht s3???

    aber nur vielleicht ..



  • Beim Stringvergleich kommt bei Gleichheit 0 raus. Was bekommst du? Die Strings müssen insgesamt auch gleich lang sein (gleiche Anzahl von Zeichen). Vielleicht haut das schon nicht hin.

    SArkin



  • btw: das is c und nicht c++...

    hier mal 2 beispiele:

    char name1[] = "Peter";
    char name2[] = "Hans";
    
    if (!strcmp(name1, name2))
        cout << "Die Namen sind gleich!" << endl;
    else
        cout << "Die Namen sind unterschiedlich" << endl;
    
    // für das folgende benötigst du den header <string>
    string name3("Hugo");
    string name4("Albert");
    if (name3 == name4)
        cout << "Die Namen sind gleich" << endl;
    else
        cout << "Die Namen sind unterschiedlich" << endl;
    

    vielleicht noch ein stichwort, falls deine namen nie gleich sind: case-sensitive

    edit: wie du einzelne escape chars aus char-arrays rauskriegst, solltest du eigentlich wissen. am einfachsten durchläufst du die arrays und vergleichst jedes einzelne zeichen mit den escape sequenzen. wenn du genau auf das \n am ende des arrays aus bist, ersetzt du dann einfach das '\n' durch ein '\0' und der strung ist an der stelle beendet

    [ Dieser Beitrag wurde am 30.04.2003 um 16:52 Uhr von Korbinian editiert. ]


Anmelden zum Antworten