• C语言文件操作解析(四)


                                                   C语言文件操作解析(四)

            在文件操作中除了打开操作以及读写操作,还有几种比较常见的操作。下面介绍一下这些操作中涉及到的函数。

    一.移动位置指针的函数

       rewind函数和fseek函数,这两个函数的原型是:

       void rewind(FILE *fp);     将位置指针移动到文件首

      int fseek(FILE *fp,long int offset,int origin);   将位置指针移动到距离origin的offset字节数的位置

      其中对于fseek函数中的参数,origin为起始点,offset为距离origin的偏移字节数

     origin的值有三个:SEEK_SET(0)—>文件首,SEEK_CUR(1)—>当前位置,SEEK_END(2)—>文件尾。

    注意:1)若文件是以追加方式打开,则当进行写操作时,这两个函数是不起作用的,无论将位置指针移动哪个位置,始终将添加的数据追加到文件末尾。

    二.其他常用函数

    1.ftell函数

    long int ftell(FILE *fp);

    计算当前位置指针距文件首的字节数,若出错,则返回-1L。

    利用ftell函数可以计算出文件的大小。

    2.feof函数

    int feof(FILE *fp);

    检测当前位置指针是否到达文件末尾,若到达文件末尾,则返回一个非零值,否则返回0。

    3.ferror函数

    int ferror(FILE *fp);

    检测文件操作过程中是否出错,若出错,则返回一个非零值,否则返回0

    4.remove函数

    int remove(const char *filename);

    删除文件,若删除成功,则返回0,否则返回非零值

    5.rename函数

    int rename(const char *oldname,const char *newname);

    将文件重命名,重命名成功则返回0,否则返回非零值。

    6.freopen函数

    FILE* freopen(const char *filename,const char *mode,FILE *stream);

    实现重定向输入输出。此函数在测试数据时用得比较多。

    7.fclose函数

    int fclose(FILE *stream);

    关闭一个流,若成功,则返回0,否则返回-1.注意每次对文件操作完之后需关闭流,否则可能会造成数据丢失。

    测试程序:

    #include<stdio.h>
    #include<stdlib.h>

    int main(void)
    {
    freopen("input.txt","r",stdin);
    freopen("output.txt","w+",stdout);
    int i;
    int a[10];
    for(i=0;i<10;i++)
    {
    scanf("%d",&a[i]);
    }
    for(i=0;i<10;i++)
    {
    printf("%d\n",a[i]);
    }
    return 0;
    }

    假设工程目录下已经存在input.txt,文件中的数据为1 2 -1 3 4 5 7 8 9 10,则运行之后,不需要从控制台输入数据,程序直接从input.txt中读取数据,然后将结果输出到output.txt中,不直接向控制台输出结果。

  • 相关阅读:
    Android Studio使用笔记
    Android Material Design之在RecyclerView中嵌套CardView实现
    RR 和RC 幻读问题
    mysql rr和rc区别
    7.2 Database Backup Methods 数据备份方法:
    7.1 Backup and Recovery Types 备份和恢复类型
    Chapter 7 Backup and Recovery 备份和恢复:
    mysqldump 一些参数体验
    (?m) 可以让.去匹配换行
    perl 正则前导字符
  • 原文地址:https://www.cnblogs.com/dolphin0520/p/2207699.html
Copyright © 2020-2023  润新知