Il titolo non è conforme al regolamento , è previsto che venga indicato il linguaggio .
Se il tuo codice fa quello che dovrebbe , si può considerare una soluzione , ma non ottimale .
Il linguaggio C è minimalista , ma comunque consente di acquisire un intera stringa senza bisogno di leggere un carattere alla volta
Io avrei affrontato il problema in un altro modo.
Acquisendo le due stringhe con fgets()
In un ciclo for scorrere la stringa dove cercare , quando trovo il carattere iniziale della stringa cercata
farei una strncmp() se restituisce zero , hai trovato un occorrenza e quindi incrementi un contatore .