###### (This is the documentation for SDL3, which is the current stable version. [SDL2](https://wiki.libsdl.org/SDL2/) was the previous version!) # SDL_strcasestr Search a UTF-8 string for the first instance of a specific substring, case-insensitively. ## Header File Defined in [](https://github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_stdinc.h) ## Syntax ```c char * SDL_strcasestr(const char *haystack, const char *needle); ``` ## Function Parameters | | | | | ------------ | ------------ | ------------------------------------------- | | const char * | **haystack** | the string to search. Must not be NULL. | | const char * | **needle** | the string to search for. Must not be NULL. | ## Return Value (char *) Returns a pointer to the first instance of `needle` in the string, or NULL if not found. ## Remarks This will work with Unicode strings, using a technique called "case-folding" to handle the vast majority of case-sensitive human languages regardless of system locale. It can deal with expanding values: a German Eszett character can compare against two ASCII 's' chars and be considered a match, for example. A notable exception: it does not handle the Turkish 'i' character; human language is complicated! Since this handles Unicode, it expects the strings to be well-formed UTF-8 and not a null-terminated string of arbitrary bytes. Bytes that are not valid UTF-8 are treated as Unicode character U+FFFD (REPLACEMENT CHARACTER), which is to say two strings of random bits may turn out to match if they convert to the same amount of replacement characters. ## Thread Safety It is safe to call this function from any thread. ## Version This function is available since SDL 3.1.3. ---- [CategoryAPI](CategoryAPI), [CategoryAPIFunction](CategoryAPIFunction), [CategoryStdinc](CategoryStdinc)