前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件的顺序读写

文件的顺序读写

作者头像
pigeon
发布2022-04-11 19:29:05
7350
发布2022-04-11 19:29:05
举报
文章被收录于专栏:电子荣耀

文件的顺序读写

文件的顺序读写:

文件的顺序写(输出)操作是指先输出的数据存入文件前面的位置,后输出的数据存放在文件后面的位置。

文件的顺序读(输入)操作是指按数据在文件中存储的前后顺序,从文件开头向文件末尾依次读取。

字符读写函数

字符读写函数

int fgetc(FILE *fp)

fgetc函数:从文件fp中读取一个字符。读取成功,返回值读取到的字符,读取失败时返回值为EOF。

int fputc(char ch, FILE *fp)

fputc函数;向文件fp输出一个字符ch。输出成功,函数返回值是输出的字符ch,输出失败时返回值为EOF。

例1:从键盘输入一批字符,以字符“#”结束。把输入的字符输出到文件file1.txt中。

参考答案:

代码语言:javascript
复制
 #include <stdio.h>
   #include <stdlib.h>
    int main()
   {
        char ch;
        FILE *fp;
        fp = fopen("file1.txt", "w");  //以w方式打开文件
        if(fp == NULL)
        {
           printf("打开文件失败!\n");
           exit();
       }
       while((ch = getchar()) != '#')
       {
           fputc(ch, fp);            //把字符ch写入文件
       }
       fclose(fp);                   //关闭文件
       return ;
   }

例2:把一个文件复制到另一个文件。

思路分析:基本思路是以读取方式打开源文件,以写入方式打开目标文件,然后逐个从源文件中读取字符并写入到目标文件中

参考答案:

代码语言:javascript
复制
#include <stdio.h>  
    #include <stdlib.h>
    int main()
    {
        FILE *fp1, *fp2;
        char ch, src[], dest[];
        printf("输入源文件名: ");
        scanf("%s", src);
        printf("输入目标文件名: ");
       scanf("%s", dest);
       if((fp1 = fopen(src, "r")) == NULL)
       {
           printf("源文件打开失败!\n");
           exit();
      }
      if((fp2 = fopen(dest, "w")) == NULL)
      {
          printf("目标文件打开失败!\n");
          exit();
      }
      while((ch = fgetc(fp1)) != EOF)
      {
          fputc(ch, fp2);
      }
      fclose(fp1);
      fclose(fp2);
      printf("文件复制完成!\n");
      return ;
 }

字符串的读写函数

字符串的读写函数

char * fgets(char *buf, int n, FILE *fp)

从fp中读取长度不超过n-1的字符串,存入buf指向内存。读取成功返回值是buf,失败时返回值NULL。

参数n包括字符串结束标记,没有读完n-1个字符前碰到EOF或换行符自动结束。buf可以是字符数组名和字符型指针。

int fputs(char *s, FILE *fp)

向文件fp输出一个字符串s。如果输出成功,函数返回值是非负整数,输出失败时返回值为EOF。

参数s可以是字符数组名、字符串常量和字符型指针。

例:排序输出文件

参考答案:

代码语言:javascript
复制
 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
     char dict[][], temp[];
     int i, j, n = ;
     FILE *fp;
     if((fp=fopen("dict.txt", "r")) == NULL) //读方式打开文件
     {
         printf("文件打开失败!\n");
         exit();
     }
     while((fgets(dict[n], , fp)) != NULL) //循环从文件中读取字符串
     {
         n++;                                //循环结束后n为字符串的个数
     }
     fclose(fp);                             //关闭文件

二进制和格式化读写函数

二进制读写函数

int fread(void *p, unsigned size, unsigned n, FILE *fp)

从文件fp中读取长度为size的n个数据项,存放到指针p代表的内存空间中。返回值是读取数据项个数。

int fwrite(void *p, unsigned size, unsigned n, FILE *fp)

把指针p指向的n*size个字节的数据输出到文件fp中。写入成功时返回值为写入数据项个数,失败返回小于n的值。

例:编程把表示多个学生信息的结构体数组写入student.dat文件中。

参考答案:

代码语言:javascript
复制
#include <stdio.h>
  #include <stdlib.h>
  typedef struct student
  {
      int id;
      char name[];
      double score;
  } STUDENT;
  int main()
  {
      STUDENT stu[]={{1001,"Zhang",88.0},{1002,"Lee",75},{1003,"Wang",95}};
      int i;
      FILE *fp;
      if((fp=fopen("student.dat", "wb")) == NULL)
      {
          printf("文件打开失败!\n");
          exit();
      }
   for(i=; i<; i++)
     {
         fwrite(&stu[i], sizeof(STUDENT), , fp);
     }
     fclose(fp);
     return ;
}

格式化读写函数

int fscanf(FILE *fp, char *format, args, …)

int fprintf(FILE *fp, char *format, args, …)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子荣耀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档