資源簡介
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(!
評論
共有 條評論