资源简介

1、实现串赋值、串比较、求串长、串联接以及求子串这5种基本操作。 2、能利用上述实现的基本操作完成置换Replace (&S, T, V)以及从串中删除一段子串StrDelete(&S,pos,len)的操作。 3、以上要求实现的操作不能直接使用C语言提供的函数(gets(),puts()除外)完成。

资源截图

代码片段和文件信息

/**************************************************

实验四 串运算

1、 实现串赋值、串比较、求串长、串联接以及求子串这5种基本操作。
2、 能利用上述实现的基本操作完成置换Replace (&S T V)以及从串中删除一段子串StrDelete(&Sposlen)的操作。
3、 以上要求实现的操作不能直接使用C语言提供的函数(gets(),puts()除外)完成。
4、 所写源代码编程风格良好,有详细注释。
5、 程序运行界面良好,使用菜单实现每个基本操作。

****************************************************/

#include
#include
#include
#define NULL 0
#define MAX 20
#define TRUE 1
#define FALSE 0

typedef struct{
char* str;
int length;
}HString;

void menu(){
printf(“\n“);
printf(“\n      ===================================================================“);
printf(“\n     |                                                                   |“);
printf(“\n     |   Welcome!Here is the menu..                                      |“);
printf(“\n     |   1.  Initialize a string;                                        |“);
printf(“\n     |   2.  Copy a string;                                              |“);
printf(“\n     |   3.  Compare two string;                                         |“);
printf(“\n     |   4.  Get length of a string;                                     |“);
printf(“\n     |   5.  Connect two strings;                                        |“);
printf(“\n     |   6.  Get sub-string;                                             |“);
printf(“\n     |   7.  Replace in string;                                          |“);
printf(“\n     |   8.  Delete sub-string;                                          |“);
printf(“\n     |   9.  exit.                                                       |“);
printf(“\n     |                                                                   |“);
printf(“\n      ===================================================================“);
printf(“\n\nPlease choose which to do:      “);
}

int InitStr(HString* s){
int i=0;
char a[20];
gets(a);
for(;a[i]!=‘\0‘;i++);
s->length=i;
if(!s->str) free(s->str);
if(!i) s->str=NULL;
else{
s->str=(char*)malloc((s->length)*sizeof(char));
if(!(s->str)) {printf(“Initialize failed!!\n“);return FALSE;}
for(i=0;ilength;i++) s->str[i]=a[i];
}
return TRUE;
}

void EmptyInit(HString* s){
s->length=0;
s->str=NULL;
}

int CopyString(HString* sHString s1){
int i=0;
s->length=s1.length;
if(!s->str) free(s->str);
if(!s1.length) s->str=NULL;
else{
s->str=(char*)malloc((s->length)*sizeof(char));
if(!(s->str)) {printf(“Copy string failed!!\n“);return FALSE;}
for(i=0;ilength;i++) s->str[i]=s1.str[i];
}
return TRUE;
}

int CmpString(HString s1HString s2){
int i;
for(i=0;i return s1.length-s2.length;
}

int GetLengthString(HString s){
return s.length;
}

int Concat(HString* sHString s1HString s2){
int i=0j=0;
s->length=s1.length+s2.length;
if(!s->str) free(s->str);
s->str=(char*)malloc((s->length)*sizeof(char));
if(!

评论

共有 条评论