C Language strstr


Esempio

/* finds the next instance of needle in haystack 
   zbpos: the zero-based position to begin searching from
   haystack: the string to search in
   needle: the string that must be found
   returns the next match of `needle` in `haystack`, or -1 if not found
*/
int findnext(int zbpos, const char *haystack, const char *needle)
{
    char *p; 

    if (((p = strstr(haystack + zbpos, needle)) != NULL)
        return p - haystack;

    return -1;
}

strstr ricerca l'argomento haystack (primo) per la stringa puntata needle . Se trovato, strstr restituisce l'indirizzo dell'occorrenza. Se non riesce a trovare l' needle , restituisce NULL. Usiamo zbpos modo che non continuiamo a trovare lo stesso ago più e più volte. Per saltare la prima istanza, aggiungiamo un offset di zbpos . Un clone di Blocco note potrebbe chiamare findnext come questo, al fine di implementare il suo dialogo "Trova successivo":

/*
    Called when the user clicks "Find Next"
    doc: The text of the document to search
    findwhat: The string to find
*/
void onfindnext(const char *doc, const char *findwhat)
{
    static int i;

    if ((i = findnext(i, doc, findwhat)) != -1)
        /* select the text starting from i and ending at i + strlen(findwhat) */
    else
        /* display a message box saying "end of search" */
}