学生信息管理系统 文件打开问题
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define N 100// 允许最多100个学生的信息
typedef struct student
{
char number[10];
char name[20];
char tel[11];
} STU;
void my_menu();// 菜单
void build_new();//建立
void my_printf();//显示信息
//void my_search();//查找信息
//void my_modif();//修改信息
//void my_add();//添加信息
//void my_dele();//删除信息
//void my_sort();//排除信息
//void search_num(FILE *fp);//学号查找
//void search_name(FILE *fp);//姓名查找
//oid sort_num(FILE *fp);//学号排序
//void sort_name(FILE *fp);//姓名排序
void main()
{
char c;int flag=1;
my_menu();
c=getchar();
getchar();
while(flag)
{
switch(c)
{
case '1': build_new();break;
case '2': my_printf();break;
case '3': my_search();break;
case '4': my_modif();break;
case '5': my_add();break;
case '6': my_dele();break;
case '7': my_sort();break;
case '0': exit(1);break;
default:printf("非法输入\n");
}
printf("请继续选择:\n");
c=getchar();
getchar();
}
}
void my_menu()
{
printf("\n\n\n\n\n\n\n");
printf(" **************************************************************\n");
printf(" **************************************************************\n");
printf(" *** 1---建立新信息系统--- ***\n");
printf(" *** 2---显示信息 --- ***\n");
printf(" *** 3---查找信息 --- ***\n");
printf(" *** 4---修改信息 --- ***\n");
printf(" *** 5---添加信息 --- ***\n");
printf(" *** 6---删除信息 --- ***\n");
printf(" *** 7---排列信息 --- ***\n");
printf(" *** 0---退出 --- ***\n");
printf(" **************************************************************\n");
printf(" **************************************************************\n");
}
void build_new()
{
int temp;
FILE *fp;
STU student1[N];
STU *p;
int i=1;
char c;
int flag=1;
p=student1;
printf("开始建立信息管理系统:\n");//提示开始 或者提示调用函数成功
if((fp=fopen("d:\\student.din","wb"))==NULL)// 打开文件
{
printf("打开文件失败:\n");
return;
}
do//开始建立
{
printf("请输入学号:\n");// 指针访问结构体数组 两种方式 1‘->’‘*’
gets(p->number);
printf("请输入姓名:\n");
gets(p->name);
printf("请输入电话:\n");
gets(p->tel);
printf("是否继续输入学生信息(Y/N):\n");
c=getchar();
getchar();
while(flag)
{
if(c!='Y'&&c!='y'&&c!='N'&&c!='n')
{
printf("请输入正确(Y/N):\n");
c=getchar();
getchar();
}
else flag=0;
}
if(c=='y'||c=='Y')// 区别 y/n y 时才指向下一个
{
p++;
i++;
}
}while(c=='Y'||c=='y');// 结束输入
temp=fwrite(student1,sizeof(struct student),i,fp);// 存入文件
if(temp!=i)
{
printf("存入学生信息失败:");
return;
}
fclose(fp);
my_menu();// 重新输出一遍菜单
}
void my_printf()
{
int i=0;
FILE *fp;
STU student2[N];
STU *p;
p=student2;
if((fp=fopen("d:\\data.din","rb"))==NULL)// 打开文件
{
printf("打开文件失败:\n");
return;
}
while(!feof(fp))// 判断是否到了文件结尾
{
if((fread(p,sizeof(struct student),1,fp))==1)
{
p++;
i++;
}
else
{
printf("文件读取失败:\n");
return;
}
}
if(i=0)
{
printf("文件 为空,没有学生信息:");// 文件为空
return;
}
printf("开始显示信息,如下:\n");
printf("学号: 姓名: 电话: \n");
for(p=student2;p<student2+i;p++)
{
printf("%-s ",p->number);
printf("%-s ",p->name);
printf("%-s \n",p->tel);
}
fclose(fp);
}
这是程序的一部分 建立 和显示
建立后, 去查看文件 里面存入有数据
可是读取总是失败
或者
打开文件失败
如果要处理 txt文件 要什么方式打开 用干什么函数来处理呢???