文件操作

0x01打开文件 fopen

  • FILE *fp
  • //打开或者创建
  • fp = fopen(“文件”,”标志”);
  • errno_t error = fopen_s(&fp,”文件”, “标志”);

  • t和b的打开方式的区别:\r\n<–>\n

  • //关闭文件句柄
  • fclose(fp);
标志含义
r读模式。文件必须存在
w写模式。
a追加模式,写入在已存在的文件的后面。文件不存在就会自动创建。
r+==读写模式==(文件必须存在)
w+==读写模式==文件存在则会清空内容
a+读+追加模式
t文本方式
b二进制方式
ccs=ENCODING                          文件编码方式,可指定ENCODING为UTF-8,UNICODE.
fopen("文件路径/名称","rw,ccs=UTF-8");//默认为ANSI
读写文件

==文件读写,二进制文件读写==

文件读写,二进制文件读写
fwrite(buffer,//缓冲区
      size,   //一次写多少字节
      Count,  // 一共写几次
       fp     
       );
fwrite("hello",strlen("hello")+1,1,fp);
int data = 0 ;
fwrite(&date,sizeof(data),1,fp);

fread(buffer,size,count,fp);

char buff[100]={0};
fread(buff,strlen("hello")+1,1,fp);
int data = 0;
fread(&data,sizeof(data),1,fp);
#include "string.h"

int main()
{
    FILE *fp;
    errno_t err = fopen_s(&fp, "E:\\1\\xxx.dll", "r");
    if (fp == NULL||err!=0)
        return - 1;
    char buff[64] = { 0 };
    fread(buff, strlen("hello") + 1, 1, fp);
    int value = 0;
    fread(&value, sizeof(value), 1, fp);
    printf("%s %d\n", buff, value);
    fclose(fp);
      return 0;
}

==格式化输入输出==

//格式化输入输出

fscanf(fp,"%s %d %lf...",buf,&a,&b,...);

sprintf(fp,"%s %d...",str,a,....);
#include "stdio.h"
int format()
{
    char *path = "E:\\1\\format.txt";
    FILE *fp;
    errno_t err = fopen_s(&fp, path, "w");
    if (err != 0 || fp == NULL)
    {
        printf("fopen failed!\n");
        return err;
    }
    //写
    fprintf(fp, "%s %x %lf","hello", 0x11, 3.141593);
    fclose(fp);
     err = fopen_s(&fp, path, "r");
    if (err != 0 || fp == NULL)
    {
        printf("fopen failed!\n");
        return err;
    }
    char buff[80] = { 0 };
    int value = 0;
    double d = 0.0;
    //du
    fscanf(fp, "%s %x %lf", buff, &value, &d);

    printf("%s 0x%x %lf", buff, value, d);
    fclose(fp);
}


int main()
{
    format();
    return 0;
}

==字符输入输出==

fgetc(fp);

fput(c,fp);

==字符串输入输出==

fgets(Buffer, MaxCount,Stream);
* 在文本读写是\n会转化\r\n,二进制无转化
fputs(Buffer,fp);

0x02 其他文件操作

  • 读写指针控制
    • ==rewind(fp); //首部==
    • fseek(fp,-50,0/1/2)
      • 文件头0(==SEEK_SET==)
      • 当前位置1(==SEEK_CUR==)
      • 文件尾部2(==SEEK_END==)
  • fseek(fp,0L,SEEK_END);//定位到文件尾部
  • flen = ftell(fp);//当前读写偏移,得到文件大小
    • *
fSource = fopen(source, "rb");
fseek(fSource, 0, SEEK_END); //把指针移动到文件的结尾 ,为了获取文件长度
int len = ftell(fSource); //获取文件长度
rewind(fSource); //把指针移动到文件开头 因为我们一开始把指针移动到结尾,如果不移动回来 会出错
  • feof(fp);//判断文件是否结束
  • int rename(char *oldname,char *newname);
  • int remove(const char *filename);
  • int mkdir(const char *dir,char *mode);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值