Originariamente inviato da Fabiuz
non cè un implementazione più semplice (adatta a studente universitario che non può usare goto e non sa tutte le
librerie del C ?
Eliminare il goto non dovrebbe portare particolari problemi:
codice:
#include <sys/types.h>
#include <string.h>

char *strstr(const char *haystack, const char *needle) {
  size_t nl=strlen(needle);
  size_t hl=strlen(haystack);
  int i;
  if (!nl) return (char*)haystack;
  if (nl>hl) return 0;
  for (i=hl-nl+1; __likely(i); --i) {
    if (*haystack==*needle && !memcmp(haystack,needle,nl))
      return (char*)haystack;
    ++haystack;
  }
  return 0;
}
Eliminare le funzioni di libreria senza complicare in modo notevole il codice o riscriversele dubito sia fattibile...
Rimane quel __likely che non avevo notato, credo sia roba interna di dietlibc