Rozważmy tę funkcję pisałem bardzo szybko znaleźć ostatnie wystąpienie danego char w ciąg i powrócić to pozycja w tablicy znaków, że fizycznie jest ciąg:najbardziej wydajnym sposobem znalezienia ostatnie wystąpienie char
size_t strlstchar(const char *str, const char ch)
{
char *chptr = strrchr(str, ch);
return chptr - str;
}
Po prostu napisałem to naprawdę szybko (nie skompilowałem ani nie dodałem) tylko dlatego, że mam pytania dotyczące kilku rzeczy.
Dla mnie wydaje się to najprostszym rozwiązaniem, aby dowiedzieć się, który element tablicy zawiera ostatnie wystąpienie określonego znaku, ale nie mam pojęcia, jak to działa. Zrobiłem to po dokumentacji strrchr, więc technicznie strrchr wykonuje całą pracę. Po prostu nie mogę sobie wyobrazić, że jest to najlepszy sposób (jeśli chodzi o wydajność), aby to osiągnąć, i miałam nadzieję, że ktoś mógłby dać jakiś wkład w to, co byłoby najlepszym sposobem na zrobienie tego.
Czy strrchr to skuteczny sposób na zrobienie tego? A może strrchr najlepiej zostawić do innego użytku?
strrchr może zwrócić wartość NULL, co sprawia, że wynik twojej funkcji jest trudny do przewidzenia, kiedy nie uda się znaleźć znaku. Zazwyczaj "-str" może być postrzegana jako liczba losowa, a następnie przekształcana na size_t, skąd będziesz wiedzieć, że nie udało ci się znaleźć znaku? – xryl669