1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
#include "stdlib.h"
#include "stdio.h"
char * my_strstr (const char * str1, const char * str2, size_t size)
{
char *cp = (char *) str1;
char *s1, *s2;
size_t n;
if ( !*str2 )
return((char *)str1);
while (size)
{
s1 = cp;
s2 = (char *) str2;
n = size;
while (n && !(*s1-*s2) )
n--, s1++, s2++;
if (!*s2)
return(cp);
cp++;
size--;
}
return(NULL);
}
int main(int argc, char* argv[])
{
char *s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *s2 = "ABCDEF\0GHIJKLMNO\0QRSTUVWXYZ";
char *s3 = "WXY";
char *s4 = "ZTOTO";
char *s5;
printf("s1 (full) = %s\n", s1);
printf("s2 (partial) = %s\n", s2);
/* scan for s3 in s1 ----------------------------------------------- */
s5 = my_strstr(s1, s3, 26);
if (s5)
printf("%s found in s1 at pos %d\n", s3, s5-s1);
else
printf("%s not found in s1\n", s3);
/* scan for s3 in s2 ----------------------------------------------- */
s5 = my_strstr(s2, s3, 26);
if (s5)
printf("%s found in s2 at pos %d\n", s3, s5-s2);
else
printf("%s not found in s2\n", s3);
/* scan for s4 in s1 ----------------------------------------------- */
s5 = my_strstr(s1, s4, 26);
if (s5)
printf("%s found in s1 at pos %d\n", s4, s5-s1);
else
printf("%s not found in s1\n", s4);
/* scan for s4 in s2 ----------------------------------------------- */
s5 = my_strstr(s2, s4, 26);
if (s5)
printf("%s found in s2 at pos %d\n", s4, s5-s2);
else
printf("%s not found in s2\n", s4);
return EXIT_SUCCESS;
} |
Partager