文件操作

来源:互联网 发布:淘宝店轮播图片制作 编辑:程序博客网 时间:2024/05/22 21:03

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);
0 0
原创粉丝点击