顺序串

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");
    }
}
none
最后修改于:2023年11月25日 18:40

评论已关闭