【求助】出现未知错误
小弟最近编了一个关于户籍信息管理的简易程序 没有出错但是运行时会出现下面的对话框 求各位大神指点迷津[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;
}