标题:【求助】出现未知错误
只看楼主
darkcat
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-23
结帖率:0
已结贴  问题点数:20 回复次数:4 
【求助】出现未知错误
小弟最近编了一个关于户籍信息管理的简易程序 没有出错但是运行时会出现下面的对话框 求各位大神指点迷津[local]1[/local]
另代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define LEN sizeof(struct man)
struct MAN
{
    char id[19];
    char name[20];
    char other[20];
}man;

void search_personal()
{
    int b = 0;
    char ch[20];
    FILE *fp;
    if ((fp = fopen("information.txt", "a+")) == NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }
    printf("请输入id:\t");
    scanf("%s", ch);
    while (fread(&man, sizeof(struct MAN), 1, fp) == 1)
    {
        if (strcmp(man.id, ch) == 0)
        {
            b++;
            printf("ID\t姓名\t其他\t\n");
            printf("%s\t%s\t%s\t\n", man.id, man.name, man.other);
        }
        if (b == 0) printf("对不起!没有找到相关信息:\n");
    }
    fclose(fp);
}

void mune()
{
    void myexit();
    void searcah_personal();
    void mune_1();
    char n;
    printf("\n   -------------*********欢迎使用户籍信息管理系统*********---------------\n");
    printf("\n\t\t*************--请选择功能--***************");
    printf("\n\t\t     --       0-退出系统       --");
    printf("\n\t\t     --       1-查询个人信息   --");
    printf("\n\t\t     --       2-管理员登陆     --");
    printf("\n   -------------******************************************---------------\n");
    scanf("%c", n);
    switch (n)
    {
    case 0:myexit();break;//退出系统
    case 1:search_personal();break;//查询个人信息 与下面的查询信息不同
    case 2:mune_1();break;//管理员登陆
    }
}

void myexit()
{
    char ch;
    printf("\t是否确定退出?请选择 y or n:  ");
    getchar();
    ch = getchar();
    if (ch == 'y' || ch == 'Y')  exit(0);
}

void mune_1()//管理员账户登陆 待修改 暂定一个管理员
{
    void mune_2();
    int i = 0;
    char a[6] = { 1,2,3,4,5,6 }, p[6] = { 1,2,3,4,5,6 }, a_1[6], p_1[6];
    printf("\n-------------*********欢迎使用户籍信息管理系统*********---------------\n");
    printf("请输入您的管理员账号");
    scanf("%s", a_1);
    do
    {
        if (strcmp("a[6]", "a_1[6]") == 0)
        {
            printf("请输入您的密码");
            scanf("%s", p_1);
            do//三次输入密码机会
            {
                if (strcmp("p[6]", "p_1[6]") != 0)
                    mune_2;
                else
                {
                    i = i + 1;
                    if (i == 3)
                        break;
                    else
                        printf("您还有%d次机会", 3 - i);
                    continue;
                }
            } while (strcmp("p[6]", "p_1[6]") != 0);
        }
        else
            continue;
    } while (strcmp("p[6]", "p_1[6]") != 0);
}

void mune_2()//管理员界面
{
    void myexit();
    void enterning();
    void search();
    void change();
    char n;
    printf("\n-------------*********欢迎使用户籍信息管理系统*********---------------\n");
    printf("\n\t\t--        0-退出系统       --");
    printf("\n\t\t--        1-输入信息       --");
    printf("\n\t\t--        2-查询信息       --");
    scanf("%c", n);
    switch (n)
    {
    case 0:myexit();break;//退出管理员界面
    case 1:enterning();break;//信息输入
    case 2:search();break;//查询信息 下级选项为修改信息和删除信息
    }
}

void enterning()
{
    char ch;
    FILE *fp;
    if ((fp = fopen("information.txt", "wb+")) == NULL)
    {
        printf("找不到文件内容\n");
        exit(0);
    }
    do
    {
        printf("请输入ID号:\t");
        scanf("%s", man.id);
        printf("请输入姓名:\t");
        scanf("%s", man.name);
        printf("请输入其他信息:\t");
        scanf("%s", man.other);
        if (fwrite(&man, sizeof(struct MAN), 1, fp) != 1)
        {
            printf("文件写入错误\n");
            exit(0);
        }
        printf("是否继续操作 输入y or n\n");
        ch = getchar();
    } while (ch == 'y' || ch == 'Y');
    fclose(fp);

}

void search()//查询信息 下级选项为修改信息
{
    void myexit();
    void information_change();
    void del();
    int n;
    printf("\n-------------*********欢迎进入管理员系统*********---------------\n");
    printf("\n\t\t--        0-退出系统       --");
    printf("\n\t\t--        1-修改信息       --");
    printf("\n\t\t--        2-删除信息       --");
    scanf("%d", n);
    switch (n)
    {
    case 0:myexit();break;
    case 1:information_change();break;
    case 2:del();break;
    }
}

void information_change()
{
    int b = 0;
    char ch[20];
    FILE *fp;
    if ((fp = fopen("information.txt", "rb")) == NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }
    printf("请输入要查询的id \t");
    scanf("%s", ch);
    while (fread(&man, sizeof(struct MAN), 1, fp) == 1)
    {
        if (strcmp(man.id, ch) == 0)
        {
            b++;
            printf("请输入修改的其他信息:\n");
            scanf("%s", man.other);
            break;
        }
        if (b == 0) printf("对不起!没有找到相关信息:\n");
    }
    fclose(fp);
}

void del()
{                                                                   //删除函数和修改很相似
    FILE *fp2;
    int a, b = 0, c = 0, n = 0;
    char ch[20], ck;
    FILE *fp;

    do {
        if ((fp = fopen("information.txe", "rb")) == NULL)
        {
            printf("cannot open file\n");
            exit(0);
        }
        if ((fp2 = fopen("temp.dat", "wb")) == NULL)
        {
            printf("cannot open file\n");
            exit(0);
        }
        printf("请输入要删除id:\t");
        scanf("%s", ch);
        n++;
        while (fread(&man, sizeof(struct MAN), 1, fp) == 1)
        {
            if ((strcmp(man.id, ch) == 0))
            {
                b++;                                 //b的值如果一直没有改变说明,没有找到相关的信息;
                printf("ID\t姓名\t其他\t\n");
                printf("%s\t%s\t%s\t\n", man.id, man.name, man.other);
            }
            else if (strcmp(man.name, ch) != 0)
                fwrite(&man, sizeof(struct MAN), 1, fp2);
        }
        if (b == 0)
        {
            printf("\t没有找到相关信息!\n");
            getchar();
        }
        rewind(fp);
        getchar();
        getchar();
        printf("删除成功!");
        getchar();                   //如果要继续修改的话,要把标记返回到文件的开头;
        printf("是否继续删除?enter 'y' or 'n' \t");
        ck = getchar();
        fclose(fp);
        fclose(fp2);
        remove("information.txt");
        rename("temp.dat", "information.dat");
    } while (ck == 'y' || ck == 'Y');
    if (b != 0)                                                      //如果没有找到相关信息就不能输出
        printf("\t保存成功:\n");

}

int main()
{
    void mune();
    mune();
    return 0;
}
搜索更多相关主题的帖子: include cannot 对话框 file 
2015-05-23 23:47
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:10 
出现什么对话框

一片落叶掉进了回忆的流年。
2015-05-24 00:16
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:10 
初步看了下主函数调用mune();
    menu函数:
scanf("%d",&n);
    switch (n)
    {
取地址符不见了,而且,改成整型也没关系吧。。。
还有,函数间相互调用还是在首部声明吧,然后下面定义。。。
个人看法,不同意也没关系。

剑栈风樯各苦辛,别时冰雪到时春
2015-05-24 16:09
darkcat
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-23
得分:0 
回复 2楼 诸葛欧阳
输入数据后 出现
exe停止工作
出现一个问题,导致程序停止正常工作。
就是这样的对话框
2015-05-24 23:01
darkcat
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-23
得分:0 
回复 3楼 林月儿
这个地方后来我也发现了 改正后还是出现相同错误
2015-05-24 23:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445690-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.349736 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved