文件的常见操作
#include<stdio.h>// 由于devc++代码编码为ANCI,故读取的文件中若有中文,请设置文件编码为ANCI,否则会乱码 // 读文件
void test1() {char ch;FILE *fp; // 创建文件指针fp = fopen("./file.txt", "r"); // 读取文件while((ch=fgetc(fp))!= EOF) { // 访问文件中数据putchar(ch); //输出文件中字符}fclose(fp); // 关闭文件
}// 写单个字符到文件中
void test2() {char ch;FILE *fp; // 创建文件指针fp = fopen("./file.txt", "r+");if (fp == NULL) {perror("Failed to open file");return;}// fputc(): 写单个字符 fputc('a', fp);rewind(fp); // 将文件指针移动到文件开头while ((ch = fgetc(fp)) != EOF) { // 访问文件中数据putchar(ch); // 输出文件中字符}fclose(fp); // 关闭文件
}// 写一个字符串到文件
void test3() {char in[50], out[50];FILE *fp = fopen("./file.txt", "w+"); // w+每次都会清空文件重新写 // 写入文件gets(in);fputs(in, fp);// 读取文件,首先将文件指针移动到文件头 rewind(fp);fgets(out, 50, fp);puts(out);fclose(fp); // 关闭文件
} // 格式化写入文件
void test4() {int i = 3;float f = 4.50;FILE *fp = fopen("./file.txt", "w+");fprintf(fp, "%d, %6.2f",i,f); // 格式化写入文件 fscanf(fp, "%d, %f", i, f);printf("%d %f",i ,f);fclose(fp); // 关闭文件
} // 二进制读写文件
void test5() {float arr[5] = {1,2,3,4,5};float res[5];FILE *fp = fopen("./file.dat", "wb+"); // ------注意这里使用是wb+才可以对二进制文件操作 // 向文件写入一个数据块 arr是float类型的数组,每个元素占4字节,总共十个元素// 这里表示把整个数组都写入文件中 fwrite(arr, sizeof(float), 5,fp);rewind(fp);// 从文件中读取一个数据块 fread(res, sizeof(float), 5, fp);// 输出一下文件中内容,也就是res数组中读取的内容for (int i=0; i<5; i++) {printf("%f ", res[i]);} fclose(fp); // 关闭文件
} int main() {
// test1();
// test2();
// test3();
// test4();test5();return 0;
}