• 文件操作


    1.文件有二进制模式和字符模式。(不同系统有对换行符的修正 “ ”会被替换为 “ ”,“ ”换为 等等 这个很乱 ,二进制没有这种情况)

      1 #include <stdio.h>
      2 #include <stdlib.h>//提供 exit()的原型
      3 int main(int argc,char *argv[])
      4 {
      5 	int ch;//读取文件,储存每个字符的地方
      6 	FILE *fp;//文件指针
      7 	unsigned long count = 0;
      8 	if(argc!=2)
      9 	{
     10 		printf();
     11 	}
     12 }//argc 代表命令行 argv[0]程序的名称 argv[1]输入文件名字,要打开文件的名字

    2.fopen()

    模式字符串

    含义

    “r”

    以读的模式打开

    “w”

    以写的模式打开,把现有文件清空,不存在的话,新创建一个

    “a”

    在现有文件末端添加,不存在新建一个

    “r+”

    更新模式打开(可以读写)

    “w+”

    更新模式 清空原有数据

    “a+”

    更新模式 文件末尾添加 ,可以全读

    “rb”/“wb”/“ab”/“rb+” ….

    二进制模式操作

    “wx”/”wbx”/”w+x”/”wb+x”或者“w+bx”

    (c11)文件独占模式


    FLIE * fp;

    fp = fopen(“wacky.txt”,”r”);

    ch=getc(fp);//获取单文件字节

    while(ch!=EOF)//文件结束符

    3.fclose()//函数 正常关闭 会返回0

    4.

    fgets(buf,STLEN,fp) //读到第一个换行符 或文件结尾或 STLEN-1个字符,末尾添加一个‘’,结束符返回null

    fput(buf,fp);//写入待写入文件,不会添加换行符

    5.随机访问

    fseek(fp,0L,SEEK_END); //用于定位文件位置 第一个参数 FILE指针,第二个参数偏移量 offset,第三个用于确定从哪里开始

    ftell() 返回long,当前位置距离开始的距离

      1 fseek(fp,0L,SEEK_SET);//定位至文件开始处
      2 fseek(fp,10L,SEEK_SET);//定位至文件开始处的第10个字节
      3 fseek(fp,2L,SEEK_CUR);//当前位置 前进两个字节
      4 fseek(fp,0L,SEEK_END);//定位置文件结尾
      5 fseek(fp,-10L,SEEK_END);//定位置文件结尾回退10字节


    模式

    偏移量的起始点

    SEEK_SET

    文件开始处

    SEEK_CUR

    当前位置

    SEEK_END

    文件末尾

    注意:兼容性 不同系统很难做到兼容

    以上两个函数都是long参数,fgetpos 和 fsetpos() 他们使用了新类型 fpos_t

    int fgetpos(FILE * restrict stream,fpos_t * restrict pos)//pos描述 当前位置距离开始的位置

    int fsetpos(FILE * stream,const fpos_t *pos);


  • 相关阅读:
    一行语句让你的浏览器变成记事本
    为啥只有IPv4和IPv6,没有IPv5呢?
    在线C++编译器
    怎么让Visual Studiot在遇到一个project编译错误时停止编译其它project
    C#的继承类中static constructor的调用问题
    C#中静态构造函数导致的一个deadlock
    一个C++的轻量级的logger实现
    一个免费轻量的Mathematica替代Mathics
    实时交通路况
    构建WAP邮件发送服务器
  • 原文地址:https://www.cnblogs.com/polar-lights/p/8457088.html
Copyright © 2020-2023  润新知