谷旭网

当前位置:主页 > 介绍 >

hustwb #include#includ

hustwb #include#includ

时间:2023-11-17 04:29:13 来源: 作者:admin

  #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)”

  再试试,应该会好的

标签: #文件 #in #路径

声明:本站内容均来自互联网,不代表本站观点和立场,如侵联删!

相关阅读