(视频参考: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 因为在打开文件到未关闭文件之前,都会有一个文件指针定位到你当前操作到哪里。
1参数就是元素尺寸,这个参数有点多余。单位是字节
strlen(str)这个参数是指要写入多少个字节。
//fwrite写入 整数 (二进制文本)
5.文件定位
offset相对于origin所在位置的后offset个 ,取负就是向前偏移
origin 文件起始位置:SEEK_SET 当前位置: SEEK_CUR 文件末尾: SEEK_END
计算文件大小:
原文地址:http://www.cnblogs.com/ylww/p/16794649.html