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);