hustwb #include#includ
#include
#include
#include
typedef struct student
{
int num;
float name[10];
int age;
float sex[2];
int grade;
int score;
struct student *next;
} STUDENT;
STUDENT *readfile()
{
FILE *fg;
STUDENT *head;
STUDENT *last;
STUDENT *p;
head=(STUDENT*)malloc(LED);
head->next=NULL;
last=head;
fg=fopen("C:\Users\hust\Desktop\新建文件夹\student.dat","rb");
if(fg==NULL);
{
printf("找不到数据文件");
return NULL;
}
while(!feof(fg))
{
p=(STUDENT*)malloc(LED);
if(fread(p,sizeof(STUDENT),1,fg)==1)
{
p->next=NULL;
last->next=p;
last=p;
}
}
fclose(fg);
return head;
}
void main()
{
FILE *fg;
STUDENT s;
if ((fg=fopen("student.dat","wb"))==NULL)
{
printf("出现错误");
}
do
{
printf("请输入学号: ");
scanf("%d",&s.num);
if (s.num!=-1)
{
printf("请输入姓名: ");
scanf("%s",&s.num);
printf("请输入年龄: ");
scanf("%d",&s.age);
printf("请输入性别: ");
scanf("%s",&s.sex);
printf("请输入年级: ");
scanf("%d",&s.grade);
printf("请输入成绩: ");
scanf("%d",&s.score);
s.next=NULL;
fwrite(&s,sizeof(STUDENT),1,fg);
}
else break;
}
while(1);
fclose(fg);
readfile();
getch();
}
把这个fg=fopen("C:\Users\hust\Desktop\新建文件夹\student.dat","rb");
换成下面看看
fg=fopen("C:\\Users\\hust\\Desktop\\新建文件夹\\student.dat","rb");
因为一个\是转义字符,多一个才行
1.如果文件不在当前文件夹当中,需要输入绝对路径。或者,使用system("CD")指令更改当前路径,在目标文件路径下打开文件。
2.对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。
C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。
3.fopen的函数原型:FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
文件路径分为绝对路径和相对路径。
绝对路径:是从盘符开始的路径,形如
d:\project\data\input.txt
相对路径:是从当前路径开始的路径,假如当前路径为d:\project
要描述上述路径,只需输入
data\input.txt
实际上,严格的相对路径写法应为
.\data\input.txt
其中,.表示当前路径,在通常情况下可以省略,只有在特殊的情况下不能省略。
与.类似..为父目录,也即上一层目录。
另外,还有一种不包含盘符的特殊绝对路径,形如
\windows\system32\cmd.exe
无论当前路径是什么,会自动地从当前盘的根目录开始查找指定的程序。
在那不错了,你在路径里不要用中文名,再试试,如果还不行,把路径改为D盘或E盘再试试,或者再把打开方式改为:
将“ fg=fopen("C:\Users\hust\Desktop\新建文件夹\student.dat","rb"); ” 改为:
“ fg=fopen("C:\\Users\\hust\\Desktop\\新建文件夹\\student.dat","rb+"); ”
将 “ if ((fg=fopen("student.dat","wb"))==NULL) ” 改成:
“ if ((fg=fopen("student.dat","wb+"))==NULL)”
再试试,应该会好的