1.读文件 2.写文件 三.fputs,fgets 行读取和写入
四. fprintf,fscanf格式化读写文件内容 二.fwrite,fread二进制的读写
stat 函数 fseek,ftell,rewind remove rename fflush( 文件流) 刷新缓存
1.读文件
int main2()
{
FILE *fp = fopen("D:\\Code\\a.txt", "r");
if (fp == NULL)
{
printf("文件打开失败!\n");
return -1;
}
char ch;
while ((ch = fgetc(fp))!=EOF)
{
printf("%c\n", ch);
}
fclose(fp); 关闭
return EXIT_SUCCESS;
}
1.先使用fopen函数获取FILE类型文件 的指针 ,可以获得 w形式,a追加形式 rb wb二进制形式,成功返回文件指针,失败返回NULL
2.使用 fgetc 读取文件内容,参数使用或取得文件指针, 读取一个光标后移一位, 结束标志是EOF(-1),最后fclose关闭 文件指针
2.写文件
int main()
{
FILE * fp = fopen("../../a.txt", "w");
char ch = 'a';
fputc(ch, fp);
ch = 'b';
fputc(ch, fp);
fclose(fp); }
1.a文件不存在不会创建, w wb文件存在则会覆盖文件, 文件不存在则会创建文件
三.fputs,fgets 行读取和写入
int main()
{
char * p = "hello world";
FILE * fp = fopen("a.txt", "w");
FILE * fp2 = fopen("a.txt", "r");
fputs(p, fp);
char buf[1024]; //1KB
fgets(buf, 1024, fp2);
printf("%s\n", buf);
fclose(fp);
fclose(fp2); }
四. fprintf,fscanf格式化读写文件内容
int main()
{
FILE * fp1 = fopen("../f.txt", "w");
FILE * fp2 = fopen("../f.txt", "r");
fprintf(fp1, "%d+%d=%d\n", 1, 2, 3); 格式写入文件,在文件中 1+2=3
int a, b, c;
fscanf(fp1, "%d+%d=%d\n", &a, &b, &c); 格式读文件
printf("%d %d %d\n", a, b, c); 1 2 3
fclose(fp1);
fclose(fp2);
return 0; }
二.fwrite,fread二进制的读写
1.fwrite 参数 , 写的内容 , 按照char大小写11个 刚好写完 hello world 文件占11个字节
2.如果是写 int arr[]={1,2,3} 则占 4*3个字节大小
int main()
{
char arr[16] = "hello world";
FILE * fp = fopen("../b.txt", "wb");
fwrite(arr, sizeof(char), 11, fp);
fclose(fp);
return EXIT_SUCCESS;
}
使用 feof 判断读二进制文件时,是否读完
int main()
{
FILE * fp = fopen("../../b.txt", "rb");
int arr[10] = {0};
int i = 0;
while (!feof(fp))
{
fread(&arr[i++], sizeof(int), 1, fp);
}
fclose(fp);
printf("%d\n", arr[0]);
printf("%d\n", arr[1]);
printf("%d\n", arr[2]);
printf("%d\n", arr[3]);
return -1;
}
stat 函数
是一个结构体,还有很多信息 st_size字节大小
#include <sys/stat.h>
int main()
{
struct stat s;
stat("test01.exe", &s);
printf("文件编码:%d\n", s.st_size);
return EXIT_SUCCESS;
}
fseek,ftell,rewind
文件光标操作 从文件结尾 向左移动 移动fseek(fp, -5, SEEK_END); fseek(fp, 6, SEEK_SET); fseek(fp, 6, SEEK_CUR);
int ftell(文件流)获取光标当前位置 rewind(文件流) 重置文件光标到开始位置
remove
删除文件 remove("文件路径") 成功返回0
rename
重命名 rename(" 原文件"," 新名字") 成功返回0
fflush( 文件流) 刷新缓存