⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 string.cpp

📁 笔试中String问题总结
💻 CPP
字号:
//(字符串操作) 
//给定字符串A和B,输出A和B中的最大公共子串。
//比如A="aocdfe" B="pmcdfa" 则输出"cdf"
/*
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>

char *commanstring(char shortstring[], char longstring[])
{
	int i, j;
	

	char *substring=(char *)malloc(256);

	if(strstr(longstring, shortstring)!=NULL) //如果……,那么返回shortstring
	return shortstring; 

	for(i=strlen(shortstring)-1;i>0; i--) //否则,开始循环计算
	{
	for(j=0; j<=strlen(shortstring)-i; j++){
	memcpy(substring, &shortstring[j], i);
	substring[i]='\0';
	if(strstr(longstring, substring)!=NULL)
	return substring;
		}
	}
	return NULL;
}


main()
{
	char *str1=(char *)malloc(256);
	char *str2=(char *)malloc(256);
	char *comman=NULL;

	gets(str1);
	gets(str2);

	if(strlen(str1)>strlen(str2)) //将短的字符串放前面
	comman=commanstring(str2, str1);
	else
	comman=commanstring(str1, str2);

	printf("the longest comman string is: %s\n", comman);
}
*/




//kmp
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
//strlen
int length(char* StrSrc)
{
	int nCount = 0;
	while(*StrSrc != '\0')
	{
		nCount++;
		StrSrc++;
	}
	return nCount;
}

//strcpy
char *StrCpy(char *StrDest,const char* StrSrc )
{
	while((StrDest!= NULL) && (StrSrc != NULL))
	{
		char *address=StrDest;
		while((*StrDest++ = *StrSrc++) != '\0')
			NULL;
		return address;
	}
}

//strcat
char *StrCat(char *StrSrcLast,const char* StrSrc)
{
	char *cp = StrSrcLast;
	while(*cp !='\0')
		cp++;
	while(*cp++ = *StrSrc++);
	return StrSrcLast;
}

//strcmp
int StrCmp(char *StrSrcLast,const char* StrSrc)
{
	int ret = 0 ;
	while( ! (ret = *(unsigned char *)StrSrc - *(unsigned char *)StrSrcLast) && *StrSrcLast)
	{
		++StrSrc;
		++StrSrcLast;
	}
	if (ret < 0 )
		ret = -1 ;
	else if (ret > 0)
		ret = 1 ;
	return ret;
}
//bool IsReverseStr
bool IsReverseStr(char *StrSrc,int len)
{
	int i,j;
	if(StrSrc==NULL)
	return false;
	j = len;
	for(i = 0;i<j/2;i++)
	if(*(StrSrc+i) != *(StrSrc+j-i-1))
		return false;
	else
		return true;
}
//ReverseStr
char *ReverseStr(char* StrSrc,char *StrDest,int len)
{
		char *address=StrDest;
		char *PSrc = &StrSrc[len-1];
		while(len!=0)
		{
			*StrDest++ = *PSrc--;
			len--;
		}
		*StrDest = '\0';
		return address;
}
//strstr
/*
char *strstr(const  char *string, const  char *substring)
{      const char  *a,  *b;
       b = substring;
	   if (*b == 0)        
			return  (char*)string;
		for( ; *string != 0; string += 1)
		{  
			if (*string !=  *b)
			{        
			continue;
			}      
			a = string;
			while ((*a++ == *b++) && (*b != 0) );
			if (*b == 0)
			{        
				return (char*) string;
			}
			b = substring;
		}
}
*/
//strlwr
//StrUpr
/*
char *StrUpr(char *StrDest,char *StrSrc,int len)
{
	if(*StrSrc=((StrSrc>="A"||StrSrc<="Z")||(StrSrc>="a"||StrSrc<="b")))
	{
		if(*StrDest == NULL)
		return NULL;
		StrDest[len] = '\0';
		while(StrSrc=((StrSrc>="A"||StrSrc<="Z")?(StrSrc + 32):StrSrc))
		StrDest = StrUpr(StrDest,StrSrc,len);
	}
		return StrDest;
}
*/
void main()
{
	char StrSrc[20];
	char StrSrcLast[20];
	char StrDest[20];

	int len = 0,CmpValue=0;
	int flag = false;
	printf("Input the StrSrc\n");
	scanf("%s",&StrSrc);
	printf("Input the StrSrcLast \n");
	scanf("%s",&StrSrcLast);

	//function
	len=length(StrSrc);
	StrCpy(StrDest,StrSrc);
	StrCat(StrSrcLast,StrSrc);
	CmpValue = StrCmp(StrSrcLast,StrSrc);
	flag = IsReverseStr(StrSrc,len);
	ReverseStr( StrSrc,StrDest,len);

	//add function
	//StrUpr(StrDest,StrSrc,len);

    printf("Output the length value:%d\n",len);
	printf("Output the strcpy function value:%s\n",StrDest);
	printf("Output the strcat function value:%s\n",StrSrcLast);
	printf("Output the strcat function value:%s\n",StrSrcLast);
	printf("Output the strcmp function value:%d\n",CmpValue);

	//printf("Output the StrUpr function value:%s\n",StrDest);

	//IsReverseStr
	if(flag)
		printf("IsReverseStr\n");
	else
		printf("Not IsReverseStr");
	printf("Output the ReverseStr function value:%s\n",StrDest);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -