Pokaż wyniki od 1 do 4 z 4

Temat: [C++] ISO C++ forbids comparison between pointer and integer

  1. #1
    Dawni Moderatorzy Avatar VR8
    Dołączył
    24-09-2011
    Skąd
    Kraków
    Posty
    324

    Domyślnie [C++] ISO C++ forbids comparison between pointer and integer

    Witam.
    Mam błąd w linijce
    Kod:
    const char* ZMIENNA = "111111111111111111111111";
    Idzie to jakoś naprawić?
    Próbowałem bez cudzysłowiów, z apostrofami i nie działa.

    Program ma na celu porównać tą zmienną z wartością podaną przez użytkownika.
    "Najwyższym osiągnięciem jest pokonać wroga bez walki" - Sun Tzu

    ---
    Sprzedam keyloggera wysyłającego logi na maila, do tego masa dodatków (np. USB spreading).
    Kontakt: (gg)41878055
    ---

  2. #2

    Domyślnie

    Do porównywania napisów radze użyć biblioteki "string" - http://cpp0x.pl/kursy/Kurs-C++/Biblioteka-string/319
    A jeśli chodzi konkretnie o wyświetlany błąd to w samej linijce którą wstawiłeś błędu nie ma. Pewnie coś jest nie tak przy porównywaniu tej stałej z wartością wpisaną przez użytkownika.

    Pozdrawiam

  3. #3
    Dawni Moderatorzy
    Dołączył
    11-11-2006
    Skąd
    Polska
    Posty
    562

    Domyślnie

    do porównywania dwóch cstringów służy funkcja strcmp: http://www.cplusplus.com/reference/c...string/strcmp/

  4. #4
    Użytkownik Avatar cpp
    Dołączył
    03-02-2012
    Skąd
    pl->D->DKL
    Posty
    6

    Domyślnie

    VR8@ proszę:

    Kod:
    #include <iostream>
    #include <cstring>
    #include <conio.h>
    
    using namespace std;
    
    int main()
    {
    
        const char *STALA = "111";
        char *napis = new char[80];
    
        cin >> napis;
    
        if (strcmp(STALA,napis) != 0 )
            cout << "\nNapisy nie zgadzaja sie";
        else
            cout << "\nOK";
    
        getch();
    
        delete []STALA;
        delete []napis;
    
        return 0;
    }
    1. plik nagłówkowy cstring daje funkcję strcmp (string compare)
    2. jeśli coś jest const to nie jest zmienne tylko stałe
    3. jeśli tworzy się pojedynczą zmienną lub całą tablicę poprzez wskaźnik, należy używać operatora new, jak w kodzie
    4. ostatecznie należy zwolnić pamięć operatorem delete

    Zerknij jeszcze na: http://www.cplusplus.com/reference/c...string/strcmp/

    Inna możliwość zaprojektowania kodu:
    Kod:
    #include <iostream>
    #include <cstring>
    #include <conio.h>
    
    using namespace std;
    
    int main()
    {
        const char *STALA = new char[3];
    
        STALA = "111";
    
        char *napis = new char[80];
    
        cin >> napis;
    
        if (strcmp(STALA,napis) != 0 )
            cout << "\nNapisy nie zgadzaja sie";
        else
            cout << "\nOK";
    
        getch();
        delete []STALA;
        delete []napis;
    
        return 0;
    }
    Czemu do licha post nie ląduje na końcu tylko na górze???
    Ostatnio edytowane przez cpp ; 03-02-2012 o 14:09

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •