c语言-文件读写

这篇博客详细介绍了C语言中文件的读写操作,包括使用fopen、fgetc/fputc、fgets/fputs、fprintf/fscanf进行字符和字符串的处理。同时,展示了如何利用结构体进行文件读写,并探讨了文件指针的定位技巧,如SEEK_SET、SEEK_CUR和SEEK_END。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>

//r w a r+读写 w+新建读写 a+ rb二进制 wb ab rb+ wb+ ab+ 
//fgetc fputc fgets fputs fscanf fprintf fread fwrite
//SEEK_SET SEEK_CUR SEEK_END

void  io_c() {
	FILE* fp1 = fopen("E:/1.txt", "r");
	if (fp1 == 0) {
		printf("文件无法打开\n");
		return;
	}
	FILE* fp2 = fopen("E:/2.txt", "w");
	//char
	char c;
	while (!feof(fp1)) { //是否在末尾
		c = fgetc(fp1); //获取字符
		putchar(c);
		fputc(c, fp2);
	}
	fclose(fp1);
	fclose(fp2);

}
void io_str() {
	//str
	char str[10];
	FILE* fp1 = fopen("E:/1.txt", "r");
	while (fgets(str, 10, fp1) != 0) {//字符串末尾,文件结束
		printf("%s", str);
	}
	fclose(fp1);
}
void io_f() {
	//str
	char str[10];
	FILE* fp1 = fopen("E:/3.txt", "w");
	fprintf(fp1, "%s %d", "我", 100);
	fclose(fp1);

	char str2[10];
	int a;
	FILE* fp2 = fopen("E:/3.txt", "r");
	while (!feof(fp2)) {
		fscanf(fp2, "%s %d", str2, &a);
		printf("%s %d", str2, a);
	}
	fclose(fp2);
	
}
struct student {
	char name[10];
	int score;
}stu = {"我",100},stu2;
void io_rw() {
	//struct
	FILE* fp1 = fopen("E:/4.txt", "w");
	fwrite(&stu, sizeof(struct student), 1, fp1);
	fclose(fp1);


	FILE* fp2 = fopen("E:/4.txt", "r");
	while (!feof(fp2) && fread(&stu2, sizeof(struct student), 1, fp2)) {
		printf("%s %d\n", stu2.name, stu2.score);
	}
	fclose(fp2);

}

void  io_seek() {
	FILE* fp1 = fopen("E:/1.txt", "r");
	if (fp1 == 0) {
		printf("文件无法打开\n");
		return;
	}
	//char
	char c;
	while (!feof(fp1)) { //是否在末尾
		c = fgetc(fp1); //获取字符
		putchar(c);
	}
	printf("\n指针位置: %d\n", ftell(fp1));
	fseek(fp1, 5, SEEK_SET);
	printf("\n指针移动后位置: %d\n", ftell(fp1));
	while (!feof(fp1)) { //是否在末尾
		c = fgetc(fp1); //获取字符
		putchar(c);
	}

	fclose(fp1);

}
void io() {
	//io_c();
	//io_str();
	//io_f();
	//io_rw();
	io_seek();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值