• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czemu program nie wchodzi w kod ifa?

Object Storage Arubacloud
0 głosów
158 wizyt
pytanie zadane 12 grudnia 2015 w C i C++ przez cytrynowy012 Nowicjusz (220 p.)
#include <iostream>

char* FirstWord(char* string)
{
    char* result = (char*)malloc(1);
    for (unsigned int i = 0; strlen(string); i++)
    {
        if (string[i] == ' ')
        {
            result[i] = 0x00;
            return result;
        }

        result[i] = string[i];

        result = (char*)realloc(result,i + 2);
    }
}

int main()
{
    char* string = "Hello World";
    char* result = FirstWord(string);
    std::cout << result << std::endl;
    if (result == "Hello")
    {
        std::cout << "OK";
    }
    getchar();
    return 0;
}

2 odpowiedzi

0 głosów
odpowiedź 12 grudnia 2015 przez notabigthreat Mądrala (7,060 p.)
== w odniesieniu do char* ma bardzo ostre kryteria. Nie tylko napisy muszą być identyczne. Żeby warunek był prawdziwy, po obu stronach musi być dokładnie ten sam napis. Oznacza to, że napis nie jest równy swojej kopii, ponieważ ona jest przechowywana gdzie indziej. Jeśli chcesz bardziej intuicyjnego porównywania, użyj funkcji strcmp. Możesz też zapoznać się z std::string, czyli typem przechowywującym ciąg znaków, który da się normalnie porównywać.
komentarz 12 grudnia 2015 przez cytrynowy012 Nowicjusz (220 p.)

Funckja strcmp również zwraca fałsz:/

 

int main()
{
    char* string = "Hello World";
    char* result = FirstWord(string);
    std::cout << result << std::endl;
    std::cout << strcmp(result, "Hello") << std::endl;
    getchar();
    return 0;
}

komentarz 12 grudnia 2015 przez notabigthreat Mądrala (7,060 p.)
Rezultat twojej funkcji ma na końcu jeszcze spację.
komentarz 12 grudnia 2015 przez cytrynowy012 Nowicjusz (220 p.)

Porównałem z "Hello " i niby działa, tylko teraz nie rozumiem czemu na końcu jest spacja. Debugując program jej nie widzę:/0x0112ab88 "Hello"

 

0 głosów
odpowiedź 12 grudnia 2015 przez cytrynowy012 Nowicjusz (220 p.)
Szkoda, że się za bardzo na tym nie znasz i wprowadziłeś mnie w błąd. Moja funkcja działa prawidłowo, natomiast strcmp zwraca 0 w przypadku gdy oba teksty sa identyczne:/

Podobne pytania

0 głosów
2 odpowiedzi 467 wizyt
pytanie zadane 13 października 2021 w C i C++ przez marchee Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 2,181 wizyt
pytanie zadane 5 stycznia 2017 w C i C++ przez Niebieski_Zerg Użytkownik (610 p.)
0 głosów
1 odpowiedź 407 wizyt
pytanie zadane 28 października 2015 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)

92,622 zapytań

141,477 odpowiedzi

319,817 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...