Witam,
napisałem funkcję, która ma za zadanie zwrócenie wskaźnika do drugiego wystąpienia danego znaku w łańcuchu znaków. Wydaje mi się, że działa prawidłowo (ale tak w większości przypadków się wydaje ;)). Czy mógłby ktoś z Was rzucić na to okiem?
W przypadku nieznalezienia danego znaku w łańcuchu bazowym funkcja powinna zwrócić np. NULL - jak to zrealizować?
#include <iostream>
using namespace std;
char * znajdz(char * text, char alfa); //deklaracja funkcji znajdz, zwracającej wskaźnik do drugiego wystąpienia znaku "alfa" w tekście
void program3() {
//testowanie funkcji znajdz()
char * message = "Litwo! Ojczyzno moja Ty jestes jak zdrowie. Ile Cie trzeba cenic ten tylko sie dowie, kto Cie stracil";
char znak = 't';
cout << "\ntekst bazowy: " << message;
cout << "\nwyszukiwany znak: " << znak;
cout << endl;
cout << znajdz(message, znak);
}
char * znajdz(char * text, char alfa) { //definicja funkcji znajdz, zwracającej wskaźnik do drugiego wystąpienia znaku "alfa" w tekście
int licznik = 0;
char * wsk = text;
while (licznik<2)
{
wsk++;
if ((* wsk == alfa) || (*wsk == alfa - 32)) //znak mały alfa, znak duży alfa - 32
{
licznik++;
}
}
return wsk;
}