(视频参考: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

 

计算文件大小:

 

 

 

 

 

原文地址:http://www.cnblogs.com/ylww/p/16794649.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性