ylww

随笔仅作学习记录,请辩证参考!!!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

(视频参考:b站up主: c语言小白进阶之路    c语言文件操作)

文件分类:文本文件和二进制文件

文本文件:保存的时候,每一个字符对应一个字节

二进制文件:按照二进制编码保存的文件

 

文件操作:打开,写入,读取,关闭

1.打开文件

fopen()

FILE *fopen(const char* filename, const char* mode);

返回类型:文件指针(FILE是结构体,包含在stdio.h头文件中)

 

示例: FILE* fp = fopen("C:\\Users\\Administrator\\Desktop\\test.txt",  "r");

if(!fp) return;

绝对路径  C:\\Users\\Administrator\\Desktop\\test.txt要写双斜杠,或者用/来替代 \\

 

2.关闭文件

fclose(fp);

 

3.读取文件

这会依次读出两个字符,因为在打开文件到未关闭文件之前,都会有一个文件指针定位到你当前操作到哪里。

 (EOF只是一个宏,其实在文件中并不存在。用来标记读到末尾。) 

可以通过for循环读出所有文件内容

char ch;

while((ch= fgetc(fp)) != EOF){

  printf("%c", ch);

}

输出的内容格式并无变化,所以,fgetc应当是可以读空白字符和换行符的。

  

读入时,是没有丢弃回车符的(所以输出会有空行)。

 

//fread函数

//返回实际读取的大小

char  buff[200];  //读的地方

memset(buff, 0, sizeof(buff)); //清零   (char buff[200] = {0})

fread(buff, 1, 20,fp);

1参数就是元素尺寸,这个参数有点多余。单位是字节

20这个参数是指要读多少个字节。(可写最大值)

 

如果上述不清零的话,执行以下函数:

printf("%s\n", buff);会出现正常输出一段后乱码。(说明fread读完后并不会自动加‘\0’符号。)

若不清零想正常输出:

int  len = fread(buff, 1, 20,fp);

buff[len] = '\0';

再printf。

 

fread通过循环将文档整个数据输出:

char buff[200];

char buff[200] = {0};

while(fread(buff, 1, 100, fp)){(有点小瑕疵,最后一次读的时候会有问题)

  printf("%s",buff);

}输出的结果格式与文本一致,说明会读入空白符和回车换行符。

 

4.写文件

 FILE* fp = fopen("C:\\Users\\Administrator\\Desktop\\test.txt",  "w"); 

w是清空写,open时已经清空了。

文件数据: ABC         因为在打开文件到未关闭文件之前,都会有一个文件指针定位到你当前操作到哪里。

 
//写入字符串
 FILE* fp = fopen("C:\\Users\\Administrator\\Desktop\\test.txt",  "w"); 
char *str  = "C:\\Users\\Administrator\\Desktop\\test.txt"
fputs(str, fp);   //文本中: C:\Users\Administrator\Desktop\test.txt
str = "C:/Users/Administrator/Desktop/test.txt";
fputs(str,fp);    //文本中:紧随.....txt之后 C:/Users/Administrator/Desktop/test.txt
 
 
//fwrite函数    啥都能写入,不只是字符串
 FILE* fp = fopen("C:\\Users\\Administrator\\Desktop\\test.txt",  "w"); 
char *str  = "C:\\Users\\Administrator\\Desktop\\test.txt"
fwrite(str, 1, strlen(str), fp);  //文本中: C:\Users\Administrator\Desktop\test.txt

1参数就是元素尺寸,这个参数有点多余。单位是字节

strlen(str)这个参数是指要写入多少个字节。

 

//fwrite写入 整数  (二进制文本)

 

 

 5.文件定位 

offset相对于origin所在位置的后offset个 ,取负就是向前偏移

origin  文件起始位置:SEEK_SET     当前位置: SEEK_CUR       文件末尾: SEEK_END

 

计算文件大小:

 

 

追加: C++的get()函数使用详解_c++ get_Nine_CC的博客-CSDN博客

 

 

posted on 2022-10-16 00:52  理想主义者光芒万丈  阅读(263)  评论(0)    收藏  举报