69,373
社区成员
发帖
与我相关
我的任务
分享
#include <string.h>
#include <stdio.h>
char str[] = "lazy";
char string[] = "The quick brown dog jumps over the lazy fox";
char fmt1[] = " 1 2 3 4 5";
char fmt2[] = "12345678901234567890123456789012345678901234567890";
void main( void )
{
char *pdest;
int result;
printf( "String to be searched:\n\t%s\n", string );
printf( "\t%s\n\t%s\n\n", fmt1, fmt2 );
pdest = strstr( string, str );
result = pdest - string + 1;
if( pdest != NULL )
printf( "%s found at position %d\n\n", str, result );
else
printf( "%s not found\n", str );
}
///////////////////////////////////////////////////////////////////////////
#include <string.h>
#include <stdio.h>
int ch = 'r';
char string[] = "The quick brown dog jumps over the lazy fox";
char fmt1[] = " 1 2 3 4 5";
char fmt2[] = "12345678901234567890123456789012345678901234567890";
void main( void )
{
char *pdest;
int result;
printf( "String to be searched: \n\t\t%s\n", string );
printf( "\t\t%s\n\t\t%s\n\n", fmt1, fmt2 );
printf( "Search char:\t%c\n", ch );
/* Search forward. */
pdest = strchr( string, ch );
result = pdest - string + 1;
if( pdest != NULL )
printf( "Result:\tfirst %c found at position %d\n\n", ch, result );
else
printf( "Result:\t%c not found\n" );
/* Search backward. */
pdest = strrchr( string, ch );
result = pdest - string + 1;
if( pdest != NULL )
printf( "Result:\tlast %c found at position %d\n\n", ch, result );
else
printf( "Result:\t%c not found\n" );
}
#include <assert.h>
#include <string.h>
char *strrchr(const char *s, int c)
{
const char ch = c;
const char *sc;
for (sc = NULL; ; ++s)
{
if (*s == ch)
sc = s;
if (*s == '\0')
return ((char *) sc);
}
assert(0);
return NULL;
}
char *strstr(const char *s1, const char *s2)
{
if (*s2 == '\0')
return ((char *) s1);
for (; (s1 = strchr(s1, *s2)) != NULL; ++s1)
{
const char *sc1 = s1;
const char *sc2 = s2;
for (; ;)
{
if (*++s2 == '\0')
return ((char *) s1);
else if (*++sc1 != *sc2)
break;
}
}
return NULL;
}
char *strrstr(char *s, char *str)
{
char *p;
int len = strlen(s);
for (p = s + len - 1; p >= s; p--) {
if ((*p == *str) && (memcmp(p, str, strlen(str)) == 0))
return p;
}
return NULL;
}