【C语言】常见文件操作


文件的常见操作

c 复制代码
#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;
}
相关推荐
dora14 分钟前
Flutter的屏幕适配
android·flutter
矛取矛求19 分钟前
STL C++详解——priority_queue的使用和模拟实现 堆的使用
开发语言·c++
SoulKuyan36 分钟前
android 发送onkey广播,Android 添加键值并上报从驱动到上层
android
Yang-Never37 分钟前
ADB->查看某个应用的版本信息
android·adb·android studio
Non importa1 小时前
【C++】新手入门指南(下)
java·开发语言·c++·算法·学习方法
pp-周子晗(努力赶上课程进度版)2 小时前
【C++】特殊类的设计、单例模式以及Cpp类型转换
开发语言·c++
海洋与大气科学2 小时前
【matlab|python】矢量棍棒图应用场景和代码
开发语言·python·matlab
菜鸟学编程o2 小时前
C++:继承
开发语言·c++
wiseyao12192 小时前
c#操作excel
开发语言·c#·excel
努力努力再努力wz3 小时前
【c++深入系列】:万字string详解(附有sso优化版本的string模拟实现源码)
java·运维·c语言·开发语言·c++