Perchè dovresti usare strstr?
Strstr restituisce il puntatore ad una stringa che stai ricercando all'interno di un'altra stringa (ovviamente la prima occorrenza) altrimenti NULL.
Una stringa in C non è nient'altro che un array di char, nulla di diverso da un'array di interi, l'unica particolarità sta nella necessità di preservare una locazione per un delimitatore/terminatore '/0'. Per accedere al primo elemento di una stringa dunque devo fare riferimento all"elemento in posizione 0 ossia string [0]. Ora ricordiamo che strlen restituisce il numero di caratteri presenti in una stringa, escluso il terminatore ovviamente. Dal momento che gli indici partono da 0 (e questo è facile da spiegare, il nome di un'array altro non è che un puntatore alla locazione di memoria che contiene il primo elemento dell'array, questo puntatore é il nostro indirizzo base a cui fare riferimento per ogni accesso in memoria, string[0] = *(string + 0), string [1] = *(string + 1), attenzione però quell'1 non è assoluto, nel senso, presa ad esempio l'architettura ARM a 32 bit in cui la memoria è indirizzata a byte, quell'1 e qualsiasi altro numero viene moltiplicato per 4, infatti 4 (byte)*8bit = 32 bit, in questo modo otteniamo l'indirizzo di memoria, detto in modo davvero semplice e ridotto.) risulta ovvio decrementare il risultato di strlen di 1.