C语言基础07--文件操作

Catalogue
  1. 1. C语言基础07–文件操作

C语言基础07–文件操作

fopen模式

image-20200516181229653

读取文件:

  1. 声明一个文件指针
  2. 通过fopen打开文件获得文件指针
    1. 判断文件指针是否为空,为空则打开失败
  3. 把文件指针放到文件末尾来获取文件大小
  4. 指针再移动会文件头部
  5. 申请一块缓冲区空间用来存储读取的数据
    1. 对空间初始化
  6. 通过fread获取文件内容和真实大小
    1. 通过真实大小和刚刚获取的大小进行比较,如果相同则读取成功
  7. 读取完毕,通过fclose关掉文件指针

写文件:

  1. 声明一个文件指针
  2. 通过fopen打开文件获得文件指针
  3. 通过fwrite来写入文件,返回1则写入成功
  4. 关闭文件指针
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include<stdio.h>
#include<string.h>

int main() {
//通过移动位于文件头部的指针,可以读取文件任意位置的数据,文件指针移动到末尾处,文件读取完毕
//声明文件指针,FILE类型
FILE * pFile;
//申请一个内存空间存储文件内容,也就是char * 类型字符串
char * szReadTextBuffer;
//申请一个变量存储文件尺寸
int nReadFileSize;
//获取读取到的文件缓冲区字节数,使用fread会返回真实长度,用来判断读取是否成功
int nReadRetSize;

//fopen 可以用于打开文件,两个参数:文件路径和读取模式
if ((pFile = fopen("E:\\123.txt", "rb")) == NULL) { //读取失败返回NULL
printf("文件打开失败");
exit(0);
}
//通过设置文件指针到文件末尾,可以算出文件大小
//设置文件指针到末尾
fseek(pFile, 0, SEEK_END);//fseek用来设置指针位置(文件指针,0,要移动的位置)SEEK_END表示文件末尾(设定好的宏)
//获取文件指针的位置,获取文件大小
nReadFileSize = ftell(pFile);
//文件指针复位
rewind(pFile);//用来恢复到初始位置
//根据文件尺寸声明足够大小的内存空间
szReadTextBuffer = (char *)malloc(sizeof(char)*nReadFileSize + 1);
//判断一下是否申请成功
if (szReadTextBuffer == NULL) {
printf("failed");
exit(0);
}
//对申请到的空间初始化
memset(szReadTextBuffer, 0, nReadFileSize + 1);
//将依据获取到文件指针的文件内容读取到已经申请好的缓冲区中,并返回真实读取到的长度
nReadRetSize = fread(szReadTextBuffer, 1, nReadFileSize, pFile);

//判断是否读取失败
if (nReadFileSize != nReadRetSize) {
printf("failed");
exit(0);
}

printf("%s", szReadTextBuffer);

fclose(pFile);


FILE * pFile0;
pFile0 = fopen("E:\\1234.txt", "wb");
//fwrite作用把字符串写入文件中,第一个是缓冲区指针,第二个是写出单个元素的大小,第三个元素个数,第四个是文件指针
int s = fwrite(szReadTextBuffer, strlen(szReadTextBuffer), 1, pFile0);

fclose(pFile0);
return 0;
}