PRZYKŁADOWE ROZWIĄZANIE:
Działanie programu w przypadku podania dłuższego wzorca niż tekstu:
Program nie będzie działał poprawnie w przypadku, gdy wzorzec jest dłuższy od tekstu. Funkcja strlen zwraca długość łańcucha znaków nie włączając zakończenia null-terminator ('\0'). Zmienna dlTekstu przechowuje długość tekstu t, a zmienna dlWzorca przechowuje długość wzorca w. Warunek w pętli while sprawdza, czy n jest mniejsze lub równe dlTekstu - dlWzorca. Jeżeli wzorzec w jest dłuższy od tekstu t, wówczas dlWzorca jest większe niż dlTekstu i dlTekstu - dlWzorca będzie wartością ujemną. Ponieważ n jest inicjowane jako 0 i jest to zmienna typu int, która przyjmuje wartości całkowite, to warunek n <= dlTekstu - dlWzorca będzie od początku fałszywy dla ujemnego dlTekstu - dlWzorca. Oznacza to, że pętla while nigdy się nie rozpocznie, a program od razu przejdzie do linii, gdzie wypisywany jest komunikat nie znaleziono wzorca.
Aby poprawić ten błąd, należy dodać warunek sprawdzający, czy dlWzorca jest większe niż dlTekstu przed wejściem w pętlę wyszukiwania, i jeśli tak, natychmiast zakończyć program, drukując komunikat, że wzorzec nie może być znaleziony, ponieważ jest dłuższy niż tekst.
Wioletta Wysopal
Nauczycielka informatyki
Tutaj pojawi się lista Twoich książek
Zaloguj się i zacznij tworzyć ją już teraz.

