内容
编写程序实现字符串的基本运算:
(1) 求串的长度、两串连接、串比较、子串匹配;
(2) 用库函数直接实现上一步的字符申操作
完整代码
#include <iostream>
#include <stdio.h>
#include<string.h>
using namespace std;
#define MAX 256int StrLength(char s[])
{int i=0;while(s[i]!='\0')
i++;return i;}int StrConcat1(char s1[],char s2[], char s[])
{//把两个串、1和s2首尾连接成一个新串sint i=0,j,len1,len2;len1=StrLength(s1);len2=StrLength(s1);if(len1+len2>MAX-1) return 0;while(s1[i]!='\0'){s[i]=s1[i];i++;}j=0;while(s2[j]!='\0'){s[i]=s2[j];i++;j++;}s[i]='\0'; return 1;}int Strcomp(char *s1,char *s2)
{
while (*s1==*s2)
{if(*s1=='\0'){return 0;}s1++;s2++;}
return *s1-*s2;}int StrIndex_BF(char s[],char t[])
{int i=0,j=0,len1,len2;len1=StrLength(s);len2=StrLength(t);while(i<len1&&j<len2)if(s[i]==t[j]){i++;j++;}else {i=i-j+2;j=1;}if(j>=len2) return (i-j);else return -1;}int StrIndex_KMP(char s[],char t[],int pos,int next[])
{int i=pos,j=1;while(i<=s[0]&&j<=t[0])if(j==0||s[i]==t[j]){i++;j++;}else j=next[j];if(j<t[0]) return (i-t[0]);else return 0;}int main()
{char s1[]="hello world";char s3[]="0";char s4[]="hello";char s5[]="world";cout<<StrLength(s1)<<endl;StrConcat1(s4,s5,s3);printf("%s",s3);cout<<endl; char s2[]="yes yes";
cout<<Strcomp(s4,s5)<<endl; //比较的是字母大小,哪个不一样就比哪个
char s[]="aaaaaaabc";
char t[]="aabc";char b[]="b";
cout<<StrIndex_BF(s,t)<<endl;//返回的是第一个对应的数组下标
cout<<"**********************"<<endl;
//求串长cout<<strlen(s5)<<endl;
//两串连接strcat(s4,s5);
printf("%s",s4);cout<<endl;
//串比较
cout<<strcasecmp(s4,s)<<endl;//比较的是字符串长度,只返回1,0,-1
//子串匹配 cout<<strstr(s,b);//返回的是s中第一次出现b中的地址所对应的内容
return 0;}