数据结构试验

实验一:同学通讯录管理系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct list
{
    char number[20];//学号
    char name[20];//姓名
    char telenum[20];//电话
    struct list *next;
}list;

int menu()//主菜单函数
{
    int operation;
    printf("\n\n\n\t\t\t   **************学生通讯录管理系统**************\n\n");
    printf("\t\t\t\t\t   0.退出管理系统\n");
    printf("\t\t\t\t\t   1.插入通讯记录\n");
    printf("\t\t\t\t\t   2.删除通讯记录\n");
    printf("\t\t\t\t\t   3.查询通讯记录\n");
    printf("\t\t\t\t\t   4.显示通讯录信息\n");
    printf("\n\t\t\t   **********************************************\n\n");
    printf("请输入要进行的操作:");
    scanf("%d",&operation);
    printf("\n");
    return operation;
}
list *init(list *p)//创建结点函数
{
    list *q;
    q=(list *)malloc(sizeof(list));
    p->next=q;
    p=q;
    p->next=NULL;
    return p;
}
list *scan(list *p)//录入信息函数
{
    printf("\t\t\t\t\t请输入学号:");
    scanf("%s",&p->number);
    printf("\n");
    printf("\t\t\t\t\t请输入姓名:");
    scanf("%s",&p->name);
    printf("\n");
    printf("\t\t\t\t\t请输入电话:");
    scanf("%s",&p->telenum);
    printf("\n");
    return p;
}
void print(list *p)//显示信息函数
{
    printf("\t\t\t\t----------------------------------\n");
    printf("\t\t\t\t\t\t学号:%s\n",p->number);
    printf("\t\t\t\t\t\t姓名:%s\n",p->name);
    printf("\t\t\t\t\t\t电话:%s\n",p->telenum);
    printf("\t\t\t\t----------------------------------\n");
}
list *find(list *head,char *name)//查找函数
{
    list *p;
    p=head;
    if(!(head->next))
    {
        printf("\t\t\t\t   该通讯录为空!\n\n");
    }
    else
    {
        printf("请输入同学姓名:");
        scanf("%s",name);
        printf("\n");
        while(p)
        {
            if(strcmp(p->name,name)==0)
                break;
            else
                p=p->next;
        }
        if(p)
        {
            printf("\t\t\t\t  %s同学的通讯录为:\n",name);
            print(p);
        }
        else
            printf("\t\t\t\t  通讯录中没有该同学的记录");
    }
    return p;
}
list *add(list *p)//插入函数
{
    scan(p);
    p=init(p);
    return p;
}
list *dele(list *head,char *name)//删除函数
{
    printf("\t\t\t\t   请输入要删除的姓名:");
    scanf("%s",name);
    printf("\n");
    list *p,*q;
    p=head;
    if(!(head->next))
    {
        printf("\t\t\t\t   该通讯录为空!\n");
    }
    else
    {
        while(p)
        {
            if(strcmp(p->name,name)==0)
                break;
            else
            {
                q=p;
                p=p->next;
            }
        }
        if(p)
        {
            if(p==head)
                head=head->next;
            else
                q->next=p->next;
            free(p);
            printf("\t\t\t\t   删除成功\n");
        }
        else
            printf("\t\t\t\t   删除失败\n");

    }
    return head;
}
void display(list *head)
{
    list *p;
    p=head;
    if(!p)
    {
        printf("\t\t\t\t   该通信录为空\n");
    }
    else
    {
        while(p->next)
        {
            print(p);
            p=p->next;
        }
    }
    printf("\n\n");
}
int main()
{
    list*p,*head;
    p=(list *)malloc(sizeof(list));
    p->next=NULL;
    head=p;
    char name[10];
    int set=1;
    while(set)
    {
        switch(menu()){
        case 0: exit(0);break;
        case 1: p=add(p);break;
        case 2: head=dele(head,name);break;
        case 3: head=find(head,name);break;
        case 4: display(head);break;
        }

    }
    return 0;

}

运行结果为:

QQ浏览器截图20191127150005.png

实验二:航空客运订票系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct list //航班信息结构体list
{
    char start[20];//出发点
    char finish[20];//目的地
    char fli_num[20];//航班号
    char week[20];//星期几
    char name[20];//订票人姓名
    struct list *next;//指向该结构体的指针
}list;
list *init(list *p)//创建结点函数
{
    list *q;
    q=(list *)malloc(sizeof(list));
    p->next=q;
    p=q;
    p->next=NULL;
    return p;
}
list *scan(list *p)//输入函数
{
    printf("\t\t请输入【出发点】:");
    scanf("%s",p->start);
    printf("\n");
    printf("\t\t请输入【目的地】:");
    scanf("%s",p->finish);
    printf("\n");
    printf("\t\t请输入【航班号】:");
    scanf("%s",p->fli_num);
    printf("\n");
    printf("\t\t请输入【星期】:");
    scanf("%s",p->week);
    printf("\n");
    return p;
}
void print(list *p)//输出函数
{
    printf("\t\t\t\t\t----------------------------------\n");
    printf("\t\t\t\t\t\t\t  出发点:%s\n",p->start);
    printf("\t\t\t\t\t\t\t  目的地:%s\n",p->finish);
    printf("\t\t\t\t\t\t\t  航班号:%s\n",p->fli_num);
    printf("\t\t\t\t\t\t\t  星期:%s\n",p->week);
    if(strlen(p->name)!=0)
        printf("\t\t\t\t\t\t\t  订票人姓名:%s\n",p->name);
    printf("\t\t\t\t\t---------------------------------\n");
}
list *add_flight(list *p)//插入航班函数
{
    p=init(p);
    p=scan(p);
    return p;
}
list *dele_flight(list *head,char *fli_num)//删除航班函数
{
    list *p,*q;
    p=head;
    if(!(head->next))
    {
        printf("\t\t\t航班信息录为空!\n");
    }
    else
    {
        printf("\t\t\t请输入需要删除航班的编号:");
        scanf("%s",p->fli_num);
        printf("\n");
        while(p->next)
        {
            if(strcmp(p->fli_num,fli_num)==0)
                break;
            else
            {
                q=p;
                p=p->next;
            }
        }
    }
    if(p){
        if(p==head)
            head=head->next;
        else 
            q->next=p->next;
        free(p);
        printf("\t\t\t删除成功!\n");
    }
    else{
        printf("\t\t\t删除失败!通讯录中没有该航班的记录\n");
    }
    return head;
}
list *find_flight(list *head,char *fli_num)//查找航班函数
{
    list *p;
    p=head;
    if(!(head->next))
    {
        printf("\t\t\t   该航班信息录为空,请添加\n");
    }
    else
    {
        printf("\t\t\t   请输入航班号:");
        scanf("%s",p->fli_num);
        printf("\n");
        while(p)
        {
            if(strcmp(p->fli_num,fli_num)==0)
                break;
            else 
                p=p->next;
        }
    }
    if(p)
    {
        printf("\t\t\t   该航班具体信息为:\n");
        print(p);
    }
    else
        printf("\t\t\t   没有航班信息,请添加!!\n");
    return head;
}
void display_flight(list *head)//显示航班函数
{
    list *p;
    p=head;
    if(!(head->next))
    {
        printf("\t\t\t   该航班信息录为空\n");
    }
    else
    {
        while(p->next)
        {
            print(p);
            p=p->next;
        }
    }
}
int second_menu()//航班管理菜单函数
{
    int operation_two;
    printf("\t\t\t   ---------------航班管理------------------\n");
    printf("\t\t\t\t\t   1.插入航班信息\n");
    printf("\t\t\t\t\t   2.删除航班信息\n");
    printf("\t\t\t\t\t   3.查找航班信息\n");
    printf("\t\t\t\t\t   4.显示航班信息\n");
    printf("\t\t\t\t\t   5.返回上一菜单栏\n");
    printf("\t\t\t   -----------------------------------------\n");
    printf("请输入要选择的操作:");
    scanf("%d",&operation_two);
    printf("\n");
    return operation_two;
}
int main_menu()//主菜单函数
{
    int operation_one;
    printf("\n\n\t\t\t   ---------------航空客运订票系统---------------\n");
    printf("\t\t\t\t\t   1.航班管理菜单\n");
    printf("\t\t\t\t\t   2.订票办理菜单\n");
    printf("\t\t\t\t\t   3.退票办理菜单\n");
    printf("\t\t\t\t\t   4.退出系统\n");
    printf("\t\t\t   ----------------------------------------------\n");
    printf("请输入要选择的操作:");
    scanf("%d", &operation_one);
    printf("\n");
    return operation_one;
}
void return_lastmenu()
{
    main_menu();
}
list *order_ticket(list *head,char *name,char *start,char *finish)//订票办理函数
{
    char *a;
    list *p;
    p=head;
    if(!(head->next))
        printf("\t\t\t   航班信息记录为空,请添加\n");
    else
    {   
        while(p->next)
        {
            if(strcmp(p->start,start)==0&&strcmp(p->finish,finish)==0)
                print(p);
            else
                p=p->next;
        }

    }
    if (p)
    {
        printf("\t\t\t   请选你要订票的航班号:");
        scanf("%s", a);
        p = find_flight(head, a);
        name = strcat(p->name, name);
        strcpy(p->name, name);
        printf("\t\t\t   订票成功\n");
    }
        return head;
}
list *refund_ticket(list *head, char *name)//退票办理函数
{
    char *b;
    list *p;
    p = head;
    if (!(head->next))
        printf("\t\t\t   航班信息记录为空,请添加\n");
    else
    {
        while (p)
        {
            if (strcmp(name, p->name) == 0)
                print(p);
            else
                p = p->next;
        }
    }
    name = 0;
    printf("\t\t\t   请输入你要删除的航班号:");
    scanf("%s", b);
    p = find_flight(head, b);
    strcpy(p->name, name);
    printf("\t\t\t   删除成功\n");
    return head;
}
int main()
{
    list *head, *p;
    p = (list *)malloc(sizeof(list));
    p->next = NULL;
    head = p;
    char name[20];
    char start[20];
    char finish[20];
    char fli_num[20];
    int set = 1;
    while (set)
    {
        switch (main_menu())
        {
        case 1: {
            set = 2;
            while (set == 2)
            {
                switch (second_menu())
                {
                case 1:p = add_flight(p); break;
                case 2:head = dele_flight(head, fli_num); break;
                case 3:head = find_flight(head, fli_num); break;
                case 4:display_flight(head); break;
                case 5:set = 1; break;
                }
            }
            break; }
        case 2:head = order_ticket(head, name, start, finish); break;
        case 3:head = refund_ticket(head, name); break;
        case 4:exit(0); break;
        }
    }
    return 0;
}

运行结果为:

QQ浏览器截图20191205160457.png

可以运行出来但不能实现查找显示等功能

实验三:简易文本编辑器

#include"stdio.h"
#include"malloc.h"
#include"string.h"
#include"stdlib.h"
#include"conio.h"

#define Link_Size 100

int NUM, C, N;           //定义全局变量   NUM用来记录行号,C用来记录字串在主串中出现总次数

typedef struct _list     //行表结构
{
    char data[800];       //记录字符
    int length;          //记录长度
    struct _list*next;   //后继指针
    struct _list*pre;    //前驱指针
    int row;             //记录整篇文章行数
}LinkList;

LinkList *head;          //定义全局变量*head,文章首行头指针

void HeadWord()     //头菜单函数
{
    system("cls");       //清屏函数,使用了头文件#include"stdlib.h"

    printf("\t\t\t\t\t        ******************\n");
    printf("\t\t\t\t\t***   欢迎使用简易文本编译器   ***\n");
    printf("\t\t\t\t\t        ******************\n");
}

LinkList *CreatWord()               //创建文本函数
{
    LinkList *temp;
    char ch;
    int i, j;                                //用i记录所在行的字符数量,j来记录有多少行
    head->next = (LinkList*)malloc(sizeof(LinkList));
    head->pre = NULL;

    temp = head->next;
    temp->pre = NULL;                  
    temp->length = 0;

    for (i = 0; i < 800; i++)
        temp->data[i] = '\0';
    printf("开始创建文本,请输入文章(输入#号结束):\n");
    for (j = 0; j < Link_Size; j++)
    {
        for (i = 0; i < 800; i++)
        {
            ch = getchar();
            temp->data[i] = ch;
            temp->length++;
            if (ch == '#')
            {
                NUM = j;     //当输入“#”时候,用j记录行号,并跳出此时所在的for循环
                break;
            }
        }
        if (ch == '#')
        {
            temp->length = i;    //当输入“#”时候,用i记录该行有多少文字,并跳出创建文本循环
            temp->next = NULL;
            break;
        }
        temp->next = (LinkList *)malloc(sizeof(LinkList));
        temp->next->pre = temp;                           
        temp = temp->next;
        for (i = 0; i < 800; i++)
            temp->data[i] = '\0';
    }
    temp->row = NUM + 1;        //在循环中NUM是从0开始,所以行号+1
    system("cls");
    return temp;
}
void PrintWord()   //输出文本函数
{
    int i, j;
    LinkList *p;
    p = head->next;
    system("cls");
    HeadWord();
    printf("\n 当前文章的内容是:");
    for (j = 0; j <= NUM && p != NULL; j++)           //为什么是j<=NUM而不是<
    {
        for (i = 0; (i < 800) && (p->data[i]) != '#'; i++)
        {
            printf("%c", p->data[i]);
        }
        p = p->next;
    }
}

void CountWord()   //文章内容统计模块
{
    LinkList *temp;                                                      //WORD   代表大写字母个数
    char ch;                                                             //word   代表小写字母个数
    int i, j, t;                                                         //space  代表空格数
    int WORD = 0, word = 0, space = 0, num = 0, punct = 0, sum = 0;      //num    代表数字个数
    int line=0;                                                          //line   代表文章行数
    temp = head->next;                                                   //punch  代表标点符号
    for (j = 0; j <= NUM; j++)                                           //sum    代表WORD + word + num
    {
        for (i = 0; (i < 800) && (temp->data[i]) != '#'; i++)
        {
            ch = temp->data[i];
            if ((ch >= 'A') && (ch <= 'Z'))
                WORD++;
            else if ((ch >= 'a') && (ch <= 'z'))
                word++;
            else if ((ch >= '0') && (ch <= '9'))
                num++;
            else if (ch == ' ')
                space++;
            else if (ch == 33 || ch == 34 || ch == 39 || ch == 44 || ch == 46 || ch == 58 || ch == 59 || ch == 63)
            {
                punct++;
            }
            else if (ch == '\n')
                line++;
        }
        sum = WORD + word + num;
    }
    while (1)
    {
        printf("\n");
        HeadWord();
        printf("\t\t\t\t****************************************************\n");
        printf("\t\t\t\t\t   ****  文章内容统计菜单  ****\n");
        printf("\t\t\t\t****************************************************\n\n");
        printf("\t\t\t\t\t\t1、文章中大写字母的个数 \n");
        printf("\t\t\t\t\t\t2、文章中小写字母的个数 \n");
        printf("\t\t\t\t\t\t3、文章中数字的个数 \n");
        printf("\t\t\t\t\t\t4、文章中标点符号的个数 \n");
        printf("\t\t\t\t\t\t5、文章中空格的个数 \n");
        printf("\t\t\t\t\t\t6、文章中所有字数 \n");
        printf("\t\t\t\t\t\t7、文章所拥有的行数 \n");
        printf("\t\t\t\t\t\t8、退出返回主菜单 \n");
        printf("\t\t\t\t\t\t9、直接退出本系统 \n\n");
        printf("\t\t\t\t****************************************************\n");
        printf("\t\t\t\t 请选择需统计项目:");
        scanf_s("%d", &t);            //scanf后加_s
        switch (t)
        {
        case 1:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中大写字母的个数:%d\n", WORD);
            printf("按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 2:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中小写字母的个数:%d\n", word);
            printf("按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 3:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中数字的个数:%d\n", num);
            printf("按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 4:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中标点符号的个数:%d\n", punct);
            printf("按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 5:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中空格的个数:%d\n", space);
            printf("按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 6:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中所有字数:%d\n", sum);
            printf("按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 7:
            system("cls");
            HeadWord();
            printf("\n\t\t 文章中所有行数:%d\n", line);
            printf("按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        }
        if (t == 8)
        {
            system("cls"); break;   //运行后会返回到主菜单
        }
        if (t == 9) exit(0);
    }
}
void SearchWord(char *str1, LinkList* temp)   //指定字符串出现次数函数
{
    char Data[20];
    int i=0, j, k = 0, sum = 0;         //i行数,j每行字数,k指定字符串数组个数,sum指定字符串出现次数
    int l = 1, x;                        //l指定字符串第几次出现
    temp = head->next;
    strcpy_s(Data, str1);             //strcpy后加_s,字符串复制函数,将2复制到1
    while (temp)
    {
        for (j = 0, x = 0; j < 800; j++, x++)
        {
            if (temp->data[j] == '\n')
            {
                i++;
                x = 0;
            }
            if ((temp->data[j]) == Data[k])
            {
                k++;
                if (Data[k] != '\0')
                {
                    continue;
                }
                else if (Data[k] == '\0')
                {
                    
                    x = x - k+1;
                    sum++;
                    printf("\t\t\t\t  第%3d次出现在第%3d行 第%3d列\n\n", sum, i+1, x);
                    x=x+k-1;
                    k = 0;
                }
            }
        }
        temp = temp->next;
    }
    printf("\t\t\t 字符串总共出现次数为:%d\n\n", sum);
    C = sum;
    N = i * 800 + j;            //计算出总字数
}
void DeleteWord(char *str2)           //删除指定字符串函数
{
    char Data[20];
    LinkList *temp, *term;
    int i, j, k, m, y, num;
    strcpy_s(Data, str2);        //strcpy后加_s
    for (y = 0; y < C; y++)
    {
        num = 800;
        k = 0, m = 0;
        temp = head;
        for (i = 0; i <= NUM; i++)
        {
            term = temp;
            temp = temp->next;
            for (j = 0; j < 800; j++)
            {
                if ((temp->data[j]) == Data[k]) k++;
                else if (Data[k] != '\0') { j = j - k; k = 0; }
                if (Data[k] == '\0')
                {
                    num = j;
                    break;
                }
            }
            if (num < 800) break;
        }
        for (; i <= NUM; i++)
        {
            for (; j < 800; j++)
            {
                
                    temp->data[j - k + 1] = temp->data[j + 1];
            }
            term = temp;
            temp = temp->next;
            j = 0;
        }
    }
}
LinkList *InsertWord(LinkList *temp)    //插入字符或字符串
{
    char Data1[800], Data2[800];
    int h, l, o;
    int h1 = 0, l1 = 1;
    int i, j;
    printf("\n\t\t 请输入要插入的字符或字符串:");                     //先输入要插入的字符串
    getchar();
    gets_s(Data2);                                                     //gets函数换成了gets_s
    printf("\n\t\t 当前文章内容为:");                                 //显示文章内容
    PrintWord();
    printf("\n\t\t 请输入要插入的行:");                               //插入哪一行
    scanf_s("%d", &h);
    printf("\n\t\t 请输入要插入的列:");                               //插入哪一列
    scanf_s("%d", &l);
    int n = strlen(Data2);
    while (temp)
    {
        for (i = 0; i < 800; i++)
        {
            if (temp->data[i] == '\n')
            {
                h1++;
            }
            else
                continue;

            if (h1 == h)
            {
                strcpy_s(Data1, temp->data);
                for (j = 0; j < 400; j++)
                    temp->data[i + l + n + j] = Data1[i + l + j];//空出位置
                for (j = 0; j < n; j++)
                    temp->data[i + l + j] = Data2[j];                //进行插入
            }
        }
        temp = temp->next;
    }
    return temp;
}
LinkList * ReplaceWord(LinkList *temp)                 //字符串替换函数
{
    char Data1;      //用来接收要被替换的字符或字符串
    char Data2;      //用来接收要用哪个字符或字符串代替
    int n1, n2;
    int i;
    printf("\n\t\t 请输入要被替换的字符或字符串:");
    getchar();
    scanf_s("%c", &Data1);
    printf("\n\t\t 请输入要用哪个字符或字符串代替:");
    getchar();
    scanf_s("%c", &Data2);
    while (temp)
        {
            for (i = 0; i < 800; i++)
            {
                if (temp->data[i] == Data1)
                    temp->data[i] = Data2;
            }
            temp = temp->next;
        }
    printf("\n");
    return temp;
}
void Bmenu(LinkList *temp)
{
    char str1[20];
    char str2[20];
    int a;
    do
    {
        HeadWord();
        printf("\n\t\t\t\t****************************************************\n");
        printf("\t\t\t\t\t    **** 文章内容处理菜单 ****\n");
        printf("\t\t\t\t****************************************************\n\n");
        printf("\t\t\t\t\t     1、查找文章中的字符或者字符串 \n");
        printf("\t\t\t\t\t     2、删除文章中的字符或者字符串 \n");
        printf("\t\t\t\t\t     3、向文章中插入字符或者字符串 \n");
        printf("\t\t\t\t\t     4、替换文章中字符或者字符串 \n");
        printf("\t\t\t\t\t     5、显示当前文章内容 \n");
        printf("\t\t\t\t\t     6、返回主菜单 \n");
        printf("\t\t\t\t\t     7、直接退出系统 \n\n");
        printf("\t\t\t\t****************************************************\n");
        printf("\t\t\t\t请选择:");
        scanf_s("%d", &a);
        switch (a)
        {
        case 1:
            system("cls");
            HeadWord();
            printf("\t\t\t 请输入您需要查找的字符或字符串:");
            getchar();
            gets_s(str1);                                                  //gets函数换成了gets_s
            printf("\n");
            SearchWord(str1, temp);
            printf("按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 2:
            system("cls");
            HeadWord();
            printf("\t\t\t\t 请输入您需要删除的字符或字符串:");
            getchar();
            gets_s(str2);                                                  //gets函数换成了gets_s
            SearchWord(str2, temp);
            DeleteWord(str2);
            printf("\t\t\t\t\t 删除 %3s 后的文章为:\n\n", str2);
            PrintWord();
            printf("\n\n");
            printf(" 按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 3:
            system("cls");
            HeadWord();
            InsertWord(temp);
            printf("\t\t\t 插入字符或字符串后文章为:");
            PrintWord();
            printf("\n 按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 5:
            system("cls");
            HeadWord();
            PrintWord();
            printf("按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        case 4:
            system("cls");
            HeadWord();
            ReplaceWord(temp);
            printf("\t\t\t\t\t 替换后的文章为:\n\n");
            PrintWord();
            printf("\n\n");
            printf(" 按回车键继续····· ");
            getchar();
            getchar();
            system("cls");
            break;
        }
        if (a == 6)
        {
            system("cls");
            break;
        }
        if (a == 7) exit(0);
    } while (1);
}
void AboutWord()
{
    printf("\n\t\t\t\t\t\t 关 于 本 实 验 \n");
    printf("\t\t\t\t****************************************************\n\n");
    printf("\t\t\t\t\t\t1807004426 阮国玺 \n\n");
    printf("\t\t\t\t\t\t1807004432 王寒奇\n\n");
    printf("\t\t\t\t\t\t1807004425 郝锦阳\n\n");
    printf("\t\t\t\t\t\t1807004444 金胤宏\n\n");
    printf("\t\t\t\t\t      本实验由这四人制作完成\n\n");
    printf("\t\t\t\t****************************************************\n");
    printf("\n");
}
void save(LinkList *temp)       //文件保存函数
{
    FILE *fp;
    fp = fopen("F:/a", "w");
    fputs(temp->data, fp);
    fclose(fp);
    printf("以存到F:/a 中成功");
}
void load(LinkList *temp)            //文件读取函数
{
    FILE *fp;
    char ch;
    int n;
    fp = fopen("F:/a", "r");
    for (int i = 0; i < 800; i++)
    {
        ch = fgetc(fp);
        temp->data[i] = ch;
        if (ch == '#')
            break;
        putchar(ch);
        
    }
    fclose(fp);
    printf("\n读盘成功");
}
void menu(LinkList *temp)
{
    int t;
    do {
        HeadWord();
        printf("\n");
        printf("\t\t\t\t****************************************************\n");
        printf("\t\t\t\t\t\t****  主菜单  ****\n");
        printf("\t\t\t\t****************************************************\n");
        printf("\n");
        printf("\t\t\t\t\t\t 1、文章内容输入 \n");
        printf("\t\t\t\t\t\t 2、显示当前文章内容 \n");
        printf("\t\t\t\t\t\t 3、进入文章内容统计菜单 \n");
        printf("\t\t\t\t\t\t 4、进入文章内容处理菜单 \n");
        printf("\t\t\t\t\t\t 5、进行存盘 \n");
        printf("\t\t\t\t\t\t 6、进行读盘 \n");
        printf("\t\t\t\t\t\t 7、关于本实验\n");
        printf("\t\t\t\t\t\t 8、退出文本编辑器 \n");
        printf("\n");
        printf("\t\t\t\t****************************************************\n");
        printf("\t\t\t\t\t 注:第一次运行本程序时请选择 1 号功能 \n");
        printf("\t\t\t\t****************************************************\n");
        printf(" \t\t\t\t请选择:");
        scanf_s("%d", &t);
        if ((t > 8) || (t < 1))
        {
            printf("对不起, 无此功能, 请输入正确的功能序号!\n");
        }
        else
            switch (t)
            {
            case 1:
                system("cls");
                HeadWord();
                temp = CreatWord();
                break;
            case 2:
                system("cls");
                PrintWord();
                printf("\n");
                printf("按回车键继续····· ");
                getchar();
                getchar();
                system("cls");
                break;
            case 3:
                system("cls");
                CountWord();
                break;
            case 4:
                system("cls");
                Bmenu(temp);
                break;
            case 7:
                system("cls");
                HeadWord();
                AboutWord();
                printf("按回车键继续····· ");
                getchar();
                getchar();
                system("cls");
                break;
            case 5:
                system("cls");
                HeadWord();
                save(temp);
                printf("按回车键继续····· ");
                getchar();
                getchar();
                system("cls");
                break;
            case 6:
                system("cls");
                HeadWord();
                load(temp);
                printf("\n 按回车键继续····· ");
                getchar();
                getchar();
                system("cls");
                break;
            }
        if (t == 8) break;
    } while (1);
}
int main()
{
    head = (LinkList *)malloc(sizeof(LinkList));
    LinkList *temp = head;
    menu(temp);
}

运行结果:

QQ截图20200107190203.png

可以实现全部功能

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 13,256评论 0 13
  • 你来过 却又走远 如一缕幽幽的柳烟 时隐时现 蜿蜒着往昔的悠长 惊蛰的响雷敲过 震落了一野的相思 期待来春时 长一...
    w小郭阅读 1,855评论 1 0
  • 听着曲儿、忆起照片…摆上几张来
    燕子Yang阅读 2,481评论 0 0
  • 今天是日更的第三天,虽然一直都没人看,但至少我也在坚持了,完事开头难,我知道,我是奔着赚钱去的,我就要达到目...
    青涩姑娘阅读 2,563评论 0 2
  • p2p线下平台_华融道理财 p2p线下平台_华融道理财 p2p线下平台_华融道理财
    桓缓袄53939阅读 2,767评论 0 0

友情链接更多精彩内容