m0_73740280 2023-02-08 19:04 采纳率: 86.8%
浏览 26

请问C语言程序为什么一直报错 id return 1 exit status

用的devc++

img

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <string.h>
struct Student
{
    char id[14];
    char name[10];
    char age[4];
    char sex[4];
    char date[16];
    char address[20];
    char phone[12];
    char email[20];
};
struct Student stu[50], ss;
void menu();
int searchID(Student stu[], int count, char* keyID);
//功能:在stu的count个元素,查找ss
//返回值:查找成功,返回ss在stu中的位置号;否则,返回 -1 
int searchNAME(Student stu[], int count, char* keyNAME);
int searchPHONE(Student stu[], int count, char* keyPHONE);
int searchEMAIL(Student stu[], int count, char* keyEMAIL);
int search(Student stu[], int count, Student ss);
//正常插入,返回学生数;否则,返回-1
int add(Student stu[], int count, Student ss);
//若输入的学号存在,正常修改,返回学生数,否则,修改失败,返回 -1 
int modify(Student stu[], int count, Student ss);
//若输入的学号存在,删除,返回学生数,否则,删除失败,返回 -1 
int Delete(Student stu[], int count, Student ss);
void writeFile(Student stu[], int count);
int readFile(Student stu[]);
int main()
{
    char keyID[20], keyNAME[10], keyPHONE[12], keyEMAIL[20];
    int  count = 0, i;
    int select, select1, tag = 1;
    count = readFile(stu);
    while (tag)
    {
        //菜单 
        menu();
        scanf("%d", &select);
        switch (select)
        {
        case 1://增加
            printf("请输入待录入的学生\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
            scanf("%s %s %s %s %s %s %s %s", ss.id, ss.name, &ss.age, ss.sex, ss.date, ss.address, ss.phone, ss.email);
            i = add(stu, count, ss);
            //如果本来不存在这个学生信息 
            if (i != -1)
            {
                printf("录入成功\n");
                count = i;
            }
            else
                printf("录入失败\n");
            break;
        case 2://按学号查找
            printf("请输入学号关键字:");
            scanf("%s", keyID);
            i = searchID(stu, count, keyID);   //i = searchID(stu, count, key);  修改
            if (i != -1)
            {
                printf("待查找的学生\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
                printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].age, 
                          stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email);
            }
            else
                printf("%s不存在!\n", keyID);
            break;
 
        case 3://按姓名查找 
            printf("请输入姓名关键字:");
            scanf("%s", keyNAME);
            i = searchNAME(stu, count, keyNAME);
            if (i != -1) {
                printf("待查找的学生\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
                printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].age, 
                          stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email);
            }
            else
                printf("%s不存在!\n", keyNAME);
            break;
        case 4:
            printf("请输入电话关键字:");
            scanf("%s", keyPHONE);
            i = searchPHONE(stu, count, keyPHONE);
            if (i != -1) {
                printf("待查找的学生\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
                printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].age, 
                          stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email);
            }
            else
                printf("%s不存在!\n", keyPHONE);
            break;
        case 5:
            printf("请输入电子邮箱关键字:");
            scanf("%s", keyEMAIL);
            i = searchEMAIL(stu, count, keyEMAIL);
            if (i != -1) {
                printf("待查找的学生\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
                printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].age, 
                          stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email);
            }
            else
                printf("%s不存在!\n", keyEMAIL);
            break;
        case 6://修改 
            printf("请输入待修改的学生\n学号");
            scanf("%s", ss.id);
            i = search(stu, count, ss);
            if (i == -1)
                printf("%s 不存在,修改失败!\n", ss.id);
            else {
                //printf("请选择需要修改的信息\n1.学号 2.姓名 3.年龄 4.性别 5.出生日期 6.地址 7.电话 8.电子邮箱");
                i = modify(stu, count, ss);
                printf("修改成功\n");
            }
            break;
        case 7://删除 
            printf("请输入待删除的学生学号:");
            scanf("%s", ss.id);
            i = Delete(stu, count, ss);
            if (i != -1)
            {
                printf("删除成功\n");
                count = i;
            }
            else
                printf("%s 不存在,删除失败\n", ss.id);
            break;
        case 8://显示 
            printf("学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
            for (i = 0; i < count; i++)
                printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].age, 
                          stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email);
            break;
        case 0:
            system("cls");
            printf("欢迎再次使用学生信息管理系统......\n");
            tag = 0;
            writeFile(stu, count);
            break;
        default:
            printf("选择错误,只能选择(0-8)");
        }
        printf("按任意键继续......\n");
        getch();
        system("cls");
    }
    getch();
    return 0;
}
 
void menu()
{
    printf("       *学生信息管理系统*    \n");
    printf("1、录入学生信息\n");
    printf("2、查找学生信息(按学号)\n");
    printf("3、查找学生信息(按姓名)\n");
    printf("4、查找学生信息(按电话)\n");
    printf("5、查找学生信息(按电子邮箱)\n");
    printf("6、修改学生信息\n");
    printf("7、删除学生信息\n");
    printf("8、显示学生信息\n");
    printf("0、退出系统\n");
    printf("__________________________\n");
    printf("请选择(0-8):");
}
int searchID(Student stu[], int count, char* keyID)  //int searchID(Student stu[], int count, char key) 修改
{
    int i;
    char* p = NULL;
    for (i = 0; i < count; i++)  //先排查 学号
    {
        p = strstr(stu[i].id, keyID);
        if (p) return i;
    }
    return -1;
}
int searchNAME(Student stu[], int count, char* keyNAME)  //int searchID(Student stu[], int count, char key) 修改
{
    int i;
    char* p = NULL;
    for (i = 0; i < count; i++)  //先排查 学号
    {
        p = strstr(stu[i].name, keyNAME);
        if (p) return i;
    }
    return -1;
}
int searchPHONE(Student stu[], int count, char* keyPHONE)  //int searchID(Student stu[], int count, char key) 修改
{
    int i;
    char* p = NULL;
    for (i = 0; i < count; i++)  //先排查 学号
    {
        p = strstr(stu[i].phone, keyPHONE);
        if (p) return i;
    }
    return -1;
}
int searchEMAIL(Student stu[], int count, char* keyEMAIL)  //int searchID(Student stu[], int count, char key) 修改
{
    int i;
    char* p = NULL;
    for (i = 0; i < count; i++)  //先排查 学号
    {
        p = strstr(stu[i].email, keyEMAIL);
        if (p) return i;
    }
    return -1;
}
int search(Student stu[], int count, Student ss)
{
    int i;
    for (i = 0; i < count; i++)
        if (strcmp(stu[i].id, ss.id) == 0) return i; //if (strcmp(stu[i].name, ss.id) == 0) 修改
    return -1;
}
//功能:在stu的count个元素,查找ss
//返回值:查找成功,返回ss在stu中的位置号;否则,返回 -1 
 
int add(Student stu[], int count, Student ss)
{
    //int pos;
    //先判断添加的信息是否原本已有这个学生
    //pos = search(stu, count, ss);
    //如果本来不存在,就添加 
    //if (pos == -1)
    //{
        stu[count] = ss;
        return count + 1;
    //}
    return -1;
}
//若输入的学号存在,正常修改,返回学生数,否则,修改失败,返回 -1 
int modify(Student stu[], int count, Student ss)
{
    int pos, select1;
    char id[14], name[10], age[4], sex[4], date[16], address[20], phone[12], email[20];
    pos = searchID(stu, count, ss.id);
    if (pos == -1)
        return -1;
    else
    {
        printf("请选择需要修改的信息\n1.学号 2.姓名 3.年龄 4.性别 5.出生日期 6.地址 7.电话 8.电子邮箱\n");
        scanf("%d", &select1);
        switch (select1) {
        case 1:
            printf("请输入新的学号:");
            scanf("%s", id);
            strcpy(stu[pos].id, id); //stu[pos].id = id;  修改
            break;  //修改
        case 2:
            printf("请输入新的姓名:");
            scanf("%s", name);
            strcpy(stu[pos].name, name);//stu[pos].name = name; 修改
            break;  //修改
        case 3:
            printf("请输入新的年龄:");
            scanf("%s", age);
            strcpy(stu[pos].age, age);  //stu[pos].age = age; 修改
            break;  //修改
        case 4:
            printf("请输入新的性别:");
            scanf("%s", sex);
            strcpy(stu[pos].sex, sex); //stu[pos].sex = sex; 修改
            break;  //修改
        case 5:
            printf("请输入新的生日:");
            scanf("%s", date);
            strcpy(stu[pos].date, date); //stu[pos].date = date; 修改
            break;  //修改
        case 6:
            printf("请输入新的地址:");
            scanf("%s", address);
            strcpy(stu[pos].address, address);//stu[pos].address = address; 修改
            break;  //修改
        case 7:
            printf("请输入新的电话:");
            scanf("%s", phone);
            strcpy(stu[pos].phone, phone);  //stu[pos].phone = phone; 修改
            break;  //修改
        case 8:
            printf("请输入新的邮箱:");
            scanf("%s", email);
            strcpy(stu[pos].email, email);  //stu[pos].email = email; 修改
            break;  //修改
        default: break;  //修改
        }
        return count;
    }
}
//若输入的学号存在,删除,返回学生数,否则,删除失败,返回 -1 
int Delete(Student stu[], int count, Student ss)
{
    int pos, i;
    pos = searchID(stu, count, ss.id);
    if (pos == -1)
        return -1;
    else
    {
        for (i = pos + 1; i < count; i++)
            stu[i - 1] = stu[i];
        return count - 1;
    }
}
void writeFile(Student stu[], int count)
{
    FILE* fp;
    int i;
    //"w"是写文件 
    fp = fopen("student.txt", "w");
    for (i = 0; i < count; i++)
        //fprinf()是把文件内容输出到屏幕 
        fprintf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", stu[i].id, stu[i].name, stu[i].age, 
                       stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email);
    fclose(fp);
}
//只读文件 
int readFile(Student stu[])
{
    FILE* fp;
    int i;
    fp = fopen("student.txt", "r");
    //如果文件不存在,返回0 
    if (fp == NULL)
        return 0;
    //foef()判断文件是否结束,结束返回1,未结束返回0,用!feof()作为循环条件 
    //fscanf()将文件中的数据读入数组变量id,name...中 
    for (i = 0;; i++)
        if (fscanf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s", stu[i].id, stu[i].name, &stu[i].age, 
             stu[i].sex, stu[i].date, stu[i].address, stu[i].phone, stu[i].email) != 8) break;
    fclose(fp);
    return i;
}
 

  • 写回答

4条回答 默认 最新

  • 程序员星辰 2023-02-08 19:11
    关注

    这个错误说明程序在执行完 main 函数之后返回了一个值为 1 的错误码。最常见的原因是使用了 exit(1) 或者 return 1 来退出 main 函数。可以检查程序中是否有这样的语句,并删除它。如果程序没有显式地退出,可以在 main 函数的最后添加 return 0,表示程序正常结束。

    评论

报告相同问题?

问题事件

  • 修改了问题 2月8日
  • 创建了问题 2月8日

悬赏问题

  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥15 抖音看过的视频,缓存在哪个文件