strstr.c
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /* 
  2.  * strstr.c --
  3.  *
  4.  * Source code for the "strstr" library routine.
  5.  *
  6.  * Copyright (c) 1988-1993 The Regents of the University of California.
  7.  * Copyright (c) 1994 Sun Microsystems, Inc.
  8.  *
  9.  * See the file "license.terms" for information on usage and redistribution
  10.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  11.  *
  12.  * RCS: @(#) $Id: strstr.c,v 1.3.2.1 2005/04/12 18:28:56 kennykb Exp $
  13.  */
  14. #include <tcl.h>
  15. #ifndef NULL
  16. #define NULL 0
  17. #endif
  18. /*
  19.  *----------------------------------------------------------------------
  20.  *
  21.  * strstr --
  22.  *
  23.  * Locate the first instance of a substring in a string.
  24.  *
  25.  * Results:
  26.  * If string contains substring, the return value is the
  27.  * location of the first matching instance of substring
  28.  * in string.  If string doesn't contain substring, the
  29.  * return value is 0.  Matching is done on an exact
  30.  * character-for-character basis with no wildcards or special
  31.  * characters.
  32.  *
  33.  * Side effects:
  34.  * None.
  35.  *
  36.  *----------------------------------------------------------------------
  37.  */
  38. char *
  39. strstr(string, substring)
  40.     register char *string; /* String to search. */
  41.     char *substring; /* Substring to try to find in string. */
  42. {
  43.     register char *a, *b;
  44.     /* First scan quickly through the two strings looking for a
  45.      * single-character match.  When it's found, then compare the
  46.      * rest of the substring.
  47.      */
  48.     b = substring;
  49.     if (*b == 0) {
  50. return string;
  51.     }
  52.     for ( ; *string != 0; string += 1) {
  53. if (*string != *b) {
  54.     continue;
  55. }
  56. a = string;
  57. while (1) {
  58.     if (*b == 0) {
  59. return string;
  60.     }
  61.     if (*a++ != *b++) {
  62. break;
  63.     }
  64. }
  65. b = substring;
  66.     }
  67.     return NULL;
  68. }