12IO流的打开和关闭

FILE* fopen (

  const char* filename, //文件路径

  const char* mode // 打开模式

);

打开模式:

r: 读

w: 写

a: 追加

r+: 读写,文件必须存在,从头开始

w+: 写读,文件不存在就创建,文件存在就清空

a+: 读写,文件不存在就创建,文件存在就追加

b: 二进制方式

int fclose (

  FILE* fp // fopen的返回值

);

成功返回0,否则返回EOF。

二、非格式化IO

int fputc (

  int c, // 字符

  FILE* stream // IO流指针

);

成功返回c,失败返回EOF。

int fgetc (

  FILE* stream // IO流指针

);

成功返回读到的字符,失败或者遇到文件尾返回EOF。

 

 

#include <stdio.h>
//相对路径:本目录下的路径
//绝对路径:自定义指定文件的位置
int main()
{//FILE* 文件操作方面固定指针模式
  FILE* fp=fopen("10_1.txt","r");
  if(!fp)
  {
    perror("fopen");
    return 0;
  }
  FILE* fp1=fopen("F://C语言全部内容//C语言新一期案例//9.VIP项目-学生管理系统一//10_2.txt","w+");
  if(!fp1)
  {
    perror("fopen");//微软提供的专业来的打印错误提示用的函数
    return 0;
  }
  int c;
  for(;;)//100张100元美金,int i=1;i<=100;i++/i+=2 死循环
  {
    c=fgetc(fp);
    if(c==EOF)//判断有没有到文件的结尾
      break;
    fputc(c,fp1);
  }
  fclose(fp);
  fclose(fp1);
    
  return 0;
  }
#include <stdio.h>
  //结构体的类型名==结构体变量名或指针===访问结构体的成员
  //结构体是用来存储一堆不同数据类型的数据 
struct stu//结构体的类型名
{//结构体的成员
  char n_name[50];//数组的变量名,数组的首地址 。
  //数组是用来存储一堆相同数据类型的数据 0-19这么多个字符
  int n_num;
  int n_age;
  char addr[100];
}boya[2],boyb[2],*pa,*pb;//结构体变量名或指针

int main()
{
  FILE* fp;
  int i;
  pa=boya;
  pb=boyb;
  if((fp=fopen("10_1.dat","wb+"))==NULL)
  {
    perror("fopen");
    return 0;
  }
  printf("请输入数据:\n");//输入到缓冲区
  for(i=0;i<2;i++,pa++)
    scanf("%s%d%d%s",pa->n_name,&pa->n_num,&pa->n_age,pa->addr);
   pa=boya;
   fwrite(pa,sizeof(struct stu),2,fp);
  rewind(fp);//把文件光标移动文件首位。
  fread(pb,sizeof(struct stu),2,fp);
  printf("\n\nname\tnumber\tage\taddr\t\n");
  for(i=0;i<2;i++,pa++)
    printf("%s\t%d\t%d\t%s\t\n",pa->n_name,pa->n_num,pa->n_age,pa->addr);
  fclose(fp);
  return 0;
} 

 

posted @ 2017-09-04 20:21  gd_沐辰  阅读(484)  评论(0编辑  收藏  举报