2744:子串

strstr

严格区分大小写

#include
#include
#include

int main(){
	char str[]="abc123";
	char str2[] = "123";
	char str3[] = "1"; 
	strrev(str);
	printf("%s\n",str);
	//输出》》321cba
	printf("%d\n",strstr(str,str2));//失败返回null; 
	//输出》》0 
	printf("%s",strstr(str,str3));//成功返回父串 从第一次出现的位置开始的char* 
	//输出》》1cba 
}

strcasestr

跟strstr一样使用,但是不区分大小写

strrev

对字符串进行反序,返回是char*指针,传进去的字符串也会改变
有的编译器不支持strtrv函数

char * my_strrev(char *str)
{
   char *right = str;
   char *left = str;
   char ch;
   while (*right)  {
		right++;
   }
   right--;
   while (left < right)
   {
       ch = *left;
        *left++ = *right;
        *right-- = ch;
   }
   return(str);
}

strncpy

char *strncpy(char *dest, const char *src, int n)
把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest。

AC代码

#include
#include
#include
char * my_strrev(char *str)
{
   char *right = str;
   char *left = str;
   char ch;
   while (*right)  {
		right++;
   }
   right--;
   while (left < right)
   {
       ch = *left;
        *left++ = *right;
        *right-- = ch;
   }
   return(str);
}

char str[100][101]; 
int n;

int searchMax(char* source){
	int sublen = strlen(source);
	int len = strlen(source);
	char substr[101],revstr[101];
	int found;
	while(sublen>0){//从尾巴减 
		//从头减
		for(int i=0;i<=(len-sublen);i++){
			found = 1;
			strncpy(substr,source+i,sublen);
			strncpy(revstr,source+i,sublen);
			substr[sublen]='\0';
			revstr[sublen]='\0';
			my_strrev(revstr);
			//比较 
			for(int j=0;j

你可能感兴趣的:(百炼,字符串处理)