字符串的基本操作实验

Posted 木头科技㉿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串的基本操作实验相关的知识,希望对你有一定的参考价值。

字符串的基本操作实验

一、实验目的

1、 掌握字符串的基本操作

2、 掌握字符串函数的基本使用方法

3、 熟悉串的模式匹配算法和一般的文字处理方法

二、实验内容

(一)验证实验

1、串的模式匹配:设有一目标串s和一模式串s1,判断目标串s中是否包含模式串s1。

方法是:从目标串s中的第一个字符开始,按s1模式串的长度s1.len,与s1子串中的字符依次对应比较。若不匹配,则再从目标串s中的第二个字符开始,仍按s1模式串的长度s1.len,与s1子串中的字符依次对应比较。如此反复进行比较。直到匹配成功或者目标串s中剩余的字符少于s1的长度为止。若匹配成功,则返回s1在s中的位置。若匹配不成功,则返回函数值-1。

2、串连接:将两个字符串连接。其中一个串接在另一个串的末尾,生成一个新串。(注意:串的末尾有\\0)若给出两个串s1和s2,把s2连接在s1之后,生成一个新串s。

3、两串相等判断:给定两个串s1和s2,当s1和s2相等时,返回函数值1,否则返回函数值0。

实验程序:

1、

#define MAXLEN 25

typedef struct

char ch[MAXLEN];

 int len;

string;

int index(string s,string t,int pos)

int i,j;

i=pos;j=0;

while(i<s.len&&j<t.len)

  if (s.ch[i]==t.ch[j])++i;++j;

  else i=i-j+1;j=0;



if(j>t.len-1) return (i-t.len);

else return-1;



 

main()

string a="Beijing Shanghai China",22,a1="Shanghai",8;

int r;

r=index(a,a1,0);

printf("\\n%d",r);


2、

#define MAXLEN 14

typedef struct

char ch[MAXLEN];

 int len;

string;

string connect(string s1,string s2)

string s;

int i;

if(s1.len+s2.len<=MAXLEN)

 

 for(i=0;i<s1.len;i++)

  s.ch[i]=s1.ch[i];

 for(i=0;i<s2.len;i++)

  s.ch[s1.len-1+i]=s2.ch[i];

  s.len=s1.len+s2.len-1;

else

  s.len=0;

return(s);



main()

string a1="Beijing",8,a2="Ching",6;

string a;

a=connect(a1,a2);

printf("\\n%s\\n%d",a.ch,a.len);

3、

#define MAXLEN 13

typedef struct

char ch[MAXLEN];

 int len;

string;

int equal(string s1,string s2)

int i;

if(s1.len!=s2.len)

return (0);

else

for(i=0;i<s1.len;i++)

if(s1.ch[i]!=s2.ch[i])

return(0);



return(1);



main()

string a1="Beijing",8,a2="ching",5;

int r;

r=equal(a1,a2);

printf("\\n%d",r);


(二)设计实验
1、根据串的基本操作完成串查找和替换操作

实验程序:

\\#include <stdio.h>

\\#define MAXSTRLEN 255

typedef unsigned char SString[MAXSTRLEN+1];

int strLength(SString S)     //求串的长度

int m;

for(m=0;S[m]!='\\0';m++);

return m;



void StringCopy(SString T,SString S)



int i;

for(i=1;i<=strLength(S);i++)

T[i]=S[i];

T[i]='\\0';



void Replace(SString s, SString s1, SString s2) 

 SString  t;

int i,j,f,k=0;

if(strLength(s)>= strLength(s1))

for(i=0;i<= strLength(s);)

if(i<= strLength(s)- strLength(s1))

f=1;   //查找

for(j=0;j< strLength(s1);j++)

if(s[i+j]!=s1[j])

f=0;

break;



else f=0;

if (f==1)



for(j=0;j<strLength(s2);j++,k++)  //替换

t[k]=s2[j];

i=i+ strLength(s1);



else

t[k]=s[i];   //复制一个字符

k++;

i++;

StringCopy(s,t);   //复制字符串

 

void main()

SString str;

SString  temp,substr;

printf("请输入主串:");

scanf("%s",str);

printf("请输入查找的字符串");

scanf("%s",temp);

printf("请输入替换的字符串");

scanf("%s",substr);

Replace(str,temp,substr);

printf("新字符串为");

printf("%s\\n",str);


以上是关于字符串的基本操作实验的主要内容,如果未能解决你的问题,请参考以下文章

OD 实验 - 对一个程序的逆向

第二次实验报告

实验1:熟悉常用的Linux操作和Hadoop操作

实验1:熟悉常用的Linux操作和Hadoop操作

实验1:熟悉常用的Linux操作和Hadoop操作

实验1:熟悉常用的Linux操作和Hadoop操作