怎么样在这个代码加入一个删除功能

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
void insertRecord();
int found();
/*欢迎界面*/
void welcome()
{
    printf("* * * * * * * * * * * * * * * * * * * * * * * * *\n");
    printf("*                        *\n");
    printf("*        --火车信息管理系统--        *\n");
    printf("*        ~~author:A Passing Kamen Rider~~        *\n");
    printf("*        any key:login  ESC:quit        *\n");
    printf("* * * * * * * * * * * * * * * * * * * * * * * * *\n");
}
char level;
/*登录*/
int enter()
{
    char name[64];
    char pass[64];
    char line[64];
    FILE*user = fopen("user.txt","r");
    int cnt = 3;
enter:
    printf("系统用户(s)/ 普通用户(c)?");
     level = tolower(getch());
    printf("\n请输入您的用户名:\n");
    scanf("%s",name);
    printf("请输入您的密码:\n");
    scanf("%s",pass);
    char * eof;
    while (eof = fgets(line,sizeof(line),user))
    {
        line[strlen(line) - 1] = '\0';
        char * tok = strtok(line," ");
        if (*tok == level)
        {
            tok = strtok(NULL," ");
            if (strcmp(tok,name))
            {
                continue;
            }
            else
            {
                tok = strtok(NULL," ");
                if (strcmp(tok,pass))
                {
                    continue;
                }
                else
                    break;
            }
        }
        else
            continue;
    }
    if (feof(user) && --cnt > 0)
    {
        rewind(user);
        printf("用户名或密码输入不对,您还有%d次机会\n",cnt);
        goto enter;
    }
    if (cnt == 0)
    {
        return -1;
    }
    else
    {
        system("cls");
        if (level == 's')  //判断用户类型,进入不同的功能
        {
            getchar();
            char into;
            printf("请输入(提示:输入q进入查找,输入i进入添加,输入o退出程序):");
            scanf("%c",&into);
            if (into == 'q')
            {
                found();
            }
            else if (into == 'i')
            {
                insertRecord();
            }
            else if (into == 'o')
            {    
                //退出系统
                printf("\n结束查询。。。\n");
                return 1;
            }
            else
                printf("退出程序!");
        }
        else if (level == 'c')
        {

            found();//普通用户只有查找
        }
    }
    fclose(user);
}

/*添加*/
void insertRecord()
{
    system("cls");
    printf("**** 添加车次 ****\n");
    printf("按照格式“车次 发车时间 起始站 到站时间 终点站”添加,按回车键结束(提示:按任意键继续,按【ESC】退出)\n");
    FILE*fp=fopen("train.txt","a");
    char traininfo[128];
    getchar();
    while (getch() != 27)
    {
        printf("输入车次信息\n");
        gets(traininfo);
        fputs(traininfo,fp);
        fputs("\n",fp);
    }
    fclose(fp);
    printf("结束添加\n");
}

int found() {

    char trainNumber[10];        //车次
    char bgiTime[10];    //发车时间
    char bgiStation[10];    //发车站点
    char arrialTime[10];        //到站时间
    char arrialStation[10];    //到站站点
    char line[100];                //文件中读取的每一行
    char a1[10];
    char a2[10];
    char a3[10];
    char a4[10];
    printf("*****查询火车信息*****\n");
    FILE* ft = fopen("train.txt", "r");
    char* pos;

    int lei;    //查询类型
    printf("1:按车次搜索;2:按发车时间搜索;3:按发车站搜索;4:按到站时间搜索;5:按到站站点搜索;6:退出\n");
    printf("请输入查询类型>>");
    scanf("%d", &lei);
    if (lei == 6) {        //退出系统
        printf("\n结束查询。。。\n");
        fclose(ft);
        return 0;
    }
    switch (lei) {
    case 1: {printf("请输入车次信息:"); scanf("%s", &trainNumber);
        while (pos = fgets(line, sizeof(line), ft))
        {
            line[strlen(line) - 1] = '\0';
            char* tok = strtok(line, " ");
            
            if (strcmp(tok, trainNumber)) {
                continue;
            }
            else {
                printf("%s ", tok);
                tok = strtok(NULL, " ");
                printf("%s ", tok);
                tok = strtok(NULL, " ");
                printf("%s ", tok);
                tok = strtok(NULL, " ");
                printf("%s ", tok);
                tok = strtok(NULL, " ");
                printf("%s\n", tok);
            }
        }break; }
    case 2: {printf("请输入发车时间:"); scanf("%s", bgiTime);
        while (pos = fgets(line, sizeof(line), ft))
        {
            line[strlen(line) - 1] = '\0';
            char* tok = strtok(line, " ");
            strcpy(a1, tok);
            tok = strtok(NULL, " ");
            if (strcmp(tok, bgiTime)) {
                continue;
            }
            else {
                printf("%s ", a1);
                printf("%s ", tok);
                tok = strtok(NULL, " ");
                printf("%s ", tok);
                tok = strtok(NULL, " ");
                printf("%s ", tok);
                tok = strtok(NULL, " ");
                printf("%s\n", tok);
                continue;
            }
        }break; }
    case 3: {printf("请输入发车站点:"); scanf("%s", bgiStation);
        while (pos = fgets(line, sizeof(line), ft))
        {
            line[strlen(line) - 1] = '\0';
            char* tok = strtok(line, " ");
            strcpy(a1, tok);
            tok = strtok(NULL, " ");
            strcpy(a2, tok);
            tok = strtok(NULL, " ");
            if (strcmp(tok, bgiStation)) {
            continue;
        }
            else {
                printf("%s ", a1);
                printf("%s ", a2);
                printf("%s ", tok);
                tok = strtok(NULL, " ");
                printf("%s ", tok);
                tok = strtok(NULL, " ");
                printf("%s\n", tok);
                continue;
            }
        }break; }
    case 4: {printf("请输入到站时间:"); scanf("%s", arrialTime);
        while (pos = fgets(line, sizeof(line), ft))
        {
            line[strlen(line) - 1] = '\0';
            char* tok = strtok(line, " ");
            strcpy(a1, tok);
            tok = strtok(NULL, " ");
            strcpy(a2, tok);
            tok = strtok(NULL, " ");
            strcpy(a3, tok);
            tok = strtok(NULL, " ");
            if (strcmp(tok, arrialTime)) {
                continue;
            }
            else {
                printf("%s ", a1);
                printf("%s ", a2);
                printf("%s ", a3);
                printf("%s ", tok);
                tok = strtok(NULL, " ");
                printf("%s\n", tok);
                continue;
            }
        }break; }
    case 5: {printf("请输入到站站点:"); scanf("%s", arrialStation);
        while (pos = fgets(line, sizeof(line), ft))
        {
            line[strlen(line) - 1] = '\0';
            char* tok = strtok(line, " ");
            strcpy(a1, tok);
            tok = strtok(NULL, " ");
            strcpy(a2, tok);
            tok = strtok(NULL, " ");
            strcpy(a3, tok);
            tok = strtok(NULL, " ");
            strcpy(a4, tok);
            tok = strtok(NULL, " ");
            if (strcmp(tok, arrialTime)) {
                continue;
            }
            else {
                printf("%s ", a1);
                printf("%s ", a2);
                printf("%s ", a3);
                printf("%s ", a4);
                printf("%s\n", tok);
                continue;
            }
        } break; }
    default: {
        printf("没有这个查询类型!\n");
        break; }
    }
    fclose(ft);
    printf("结束查询。。。\n");
    return 0;
}


int main()
{
    welcome();
    enter();
}

题主的意思是删除数组中的数据吗,C语言没有集合比较尴尬,找到删除数据后,利用循环将后一个数据覆盖前一个数据实现

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632