顺序串
warning:
这篇文章距离上次修改已过424天,其中的内容可能已经有所变动。
基础不扎实,感谢多位高手指导。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define stringsize 255
struct String{
char *word;//字符域
int size;//存放串长
};//定义顺序串
String createstring() {
String *S=(String*)malloc(sizeof(String));
return *S;
}//创建串
void initstring(String &S){
S.word=(char*)malloc(sizeof(char)*(stringsize));
S.size=0;
printf("初始化成功\n");
}//初始化顺序串
void printstring(String &S){
printf("当前串为%s\n",S.word);
}//输出串
void inputstring(String &S){
int length=0;
printf("请输入串值:");
scanf("%s",S.word);
S.size=strlen(S.word);//不包括'\0'结束符
}//输入串
void comparestring1(String &S1){
String S2=createstring();
initstring(S2);
inputstring(S2);
if(strcmp(S1.word,S2.word)>0)
printf("S1字符串大于S2字符串\n");
else if(strcmp(S1.word,S2.word)==0)
printf("S1字符串等于S2字符串\n");
else
printf("S1字符串小于S2字符串\n");
}//按值比较串大小
void comparestring2(String &S1){
String S2=createstring();
initstring(S2);
inputstring(S2);
if(S1.size>S2.size)
printf("S1字符串大于S2字符串\n");
else if(S1.size==S2.size)
printf("S1字符串等于S2字符串\n");
else
printf("S1字符串小于S2字符串\n");
}//按长度比较串大小
void searchlength(String &S){
printf("串的长度为%d\n",S.size);
}//返回串长度
void destroystring(String &S){
free(S.word);
printf("字符串已销毁,已自动退出程序\n");
exit(0);
}//销毁串
void stringmenu(){
printf("1.初始化串\n");
printf("2.输出串\n");
printf("3.输入串\n");
printf("4.按值比较串大小\n");
printf("5.按长度比较串大小\n");
printf("6.返回串长度\n");
printf("7.销毁串\n");
printf("0.退出程序\n");
}//串功能菜单
void endsystem(String &S){
destroystring(S);
exit(0);
}//结束程序
int main(){
String S=createstring();
int flag=1,sort;
while(flag){
stringmenu();
printf("请输入数字选择功能:");
scanf("%d",&sort);
switch(sort){
case 1:{
initstring(S);
break;
}
case 2:{
printstring(S);
break;
}
case 3:{
inputstring(S);
break;
}
case 4:{
comparestring1(S);
break;
}
case 5:{
comparestring2(S);
break;
}
case 6:{
searchlength(S);
break;
}
case 7:{
destroystring(S);
break;
}
case 0:{
endsystem(S);
break;
}
}
printf("\n");
}
}
评论已关闭