📄 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 + -