Frage

Ich versuche in meinem C-Programm einen String und einen LPCTSTR zu vergleichen.

Folgendes habe ich bisher getan (der Code wurde auf nur das Problem vereinfacht):

DWORD main(DWORD ac, LPCTSTR *av)
{
    DWORD cpt = 1;

    while (++i < ac)
    {
        if (strcmp(av[i], "value"))
            printf("1 : OK\n");
        else if (strcmp(av[i], _T("value")))
            printf("2 : OK\n");
        else if (strcmp(av[i], (LPCTSTR)"value"))
            printf("3 : OK\n");
    }
    return EXIT_SUCCESS;
}

Wenn ich mein Programm mit dem ersten Parameter „Wert“ ausführe, scheint nichts davon zu sein if werden verifiziert.Ich habe es mit versucht strcmp Und lstrcmp aber die Ergebnisse sind die gleichen.

Kann mir bitte jemand sagen, was ich falsch mache?

Danke.

War es hilfreich?

Lösung

strcmp und Familienrückkehr 0 um anzuzeigen, dass die Zeichenfolgen gleich sind.Deine Logik ist einfach falsch.

Sie sollten den Test so schreiben:

if (strcmp(av[i], "value")==0)

Nebenbei noch die anderen beiden if Aussagen, Vergleich mit _T("value") Und (LPTSTR)"value" sind beim Kompilieren für ANSI in Ordnung, beim Kompilieren für Unicode jedoch falsch.Beim Kompilieren für Unicode _T("value") wird zu einer breiten Zeichenfolge ausgewertet und ist daher kein gültiges Argument für strcmp.Das ist ein Kompilierungsfehler.Und (LPTSTR)"value" wird auch ein Kompilierungsfehler sein, weil LPTSTR wäre eine breite Zeichenfolge.Aber auch die Besetzung wäre völlig falsch.Wie auch immer, ich erwähne diese Probleme nur der Vollständigkeit halber, aber ich verstehe, dass diese zusätzlichen if-Anweisungen hinzugefügt wurden, während Sie versuchten, das Grundproblem zu debuggen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top