strstr.c 382 B

123456789101112131415161718192021222324252627
  1. #include <string.h>
  2. /* Return pointer to first occurrence of s2 in s1, NULL if none */
  3. char
  4. *strstr(const char *s1, const char *s2)
  5. {
  6. char *p, *pa, *pb;
  7. int c0, c;
  8. c0 = *s2;
  9. if(c0 == 0)
  10. return s1;
  11. s2++;
  12. for(p=strchr(s1, c0); p; p=strchr(p+1, c0)) {
  13. pa = p;
  14. for(pb=s2;; pb++) {
  15. c = *pb;
  16. if(c == 0)
  17. return p;
  18. if(c != *++pa)
  19. break;
  20. }
  21. }
  22. return 0;
  23. }