Coding In C day13

FILE结构体用来记录文件相关的信息
FILE结构体类型的指针变量叫做文件指针。
fopen函数可以打开一个文件并制作对应的FILE结构体变量,把结构体变量的地址作为返回值使用。如果执行失败则返回NULL。
/*
   文件练习
*/
#include <stdio.h>
int main() {
	FILE *p_file = NULL;
	p_file = fopen("a.txt", "w");
	if (p_file) {
		//文件操作语句
		fclose(p_file);
		p_file = NULL;
	}
	return 0;
}


使用fopen函数时需要指定文件的操作方式。操作方式由三部分构成,分别如下
第一部分有三个可选的字符'r', 'w'和'a'。这部分必须指定并且只能指定一个字符。
'r'       对文件进行读操作
'w'       对文件进行写操作。如果文件不存在则创建新文
          件否则把原文件内容清除。
'a'       对文件进行写操作。如果文件已存在则会把新内
          容追加在文件末尾

第二部分有一个可选字符'+',这部分可有可无。如果使用了这部分则表示对文件进行读写操作。

第三部分有一个可选字符‘b’,这部分可有可无。如果使用这部分则表示要对文件进行二进制操作。

fclose函数用于关闭一个文件,当程序不再使用某个文件的时候一定要使用这个函数关闭它。

/*
   文件练习
*/
#include <stdio.h>
int main() {
	FILE *p_file = NULL;
	char str[] = "abcdef";
	int loop = 0;
	p_file = fopen("a.txt", "w");
	if (p_file) {
		//文件操作语句
		while (str[loop]) {
			if (EOF == fputc(str[loop], p_file)) {
				break;
			}
			loop++;
		}
		fclose(p_file);
		p_file = NULL;
	}
	return 0;
}

/*
   文件练习
*/
#include <stdio.h>
int main() {
	FILE *p_file = NULL;
	p_file = fopen("a.txt", "r");
	if (p_file) {
		//文件操作语句
		char ch = 0;
		do {
		    ch = fgetc(p_file);
			if (EOF != ch) {
				printf("%c", ch);
			}
		} while (EOF != ch);
		printf("\n");
		fclose(p_file);
		p_file = NULL;
	}
	return 0;
}



fputc函数可以把一个字符写入到文件中,如果失败返回EOF。

fgetc函数可以从文件中读出一个字符并返回,如果超过文件尾部则返回EOF。



/*
   文件练习
*/
#include <stdio.h>
int main() {
	FILE *p_file = NULL;
	int values[] = {1, 2, 3, 4, 5};
	p_file = fopen("a.bin", "wb");
	if (p_file) {
		//文件操作语句
		int num = fwrite(values, sizeof(int), 5, p_file);
		printf("共写入%d个整数变量\n", num);
		fclose(p_file);
		p_file = NULL;
	}
	return 0;
}

/*
   文件练习
*/
#include <stdio.h>
int main() {
	FILE *p_file = NULL;
	int values[5] = {0}, loop = 0;
	p_file = fopen("a.bin", "rb");
	if (p_file) {
		//文件操作语句
		int num = fread(values, sizeof(int), 5, p_file);
		printf("共读出%d个整数变量\n", num);
		for (loop = 0; loop <= 4; loop++) {
			printf("%d ", values[loop]);
		}
		printf("\n");
		fclose(p_file);
		p_file = NULL;
	}
	return 0;
}
fwrite函数可以一次把数组中的多个变量以二进制方式写入到文件中,返回值表示写入的变量个数。

fread函数可以一次以二进制方式从文件中读出多个变量的数值并记录到数组中,返回值表示读入的变量个数。




FILE结构体中使用位置指针记录下次对文件进行读写操作的位置,每次对文件进行过读写操作后位置指针都会移动。
rewind函数可以把位置指针移动到文件开头
fseek函数可以把位置指针移动到任何地方
SEEK_SET       0        代表文件开头
SEEK_CUR      1        位置指针当前位置

SEEK_END      2        代表文件结尾

/*
   文件练习
*/
#include <stdio.h>
int main() {
	FILE *p_file = NULL;
	p_file = fopen("a.txt", "r");
	if (p_file) {
		//文件操作语句
		fseek(p_file, 2, SEEK_SET);
		printf("%c ", fgetc(p_file));
		//rewind(p_file);
		fseek(p_file, 1, SEEK_CUR);
		printf("%c ", fgetc(p_file));
		//rewind(p_file);
		fseek(p_file, -3, SEEK_END);
		printf("%c ", fgetc(p_file));
		printf("\n");
		fclose(p_file);
		p_file = NULL;
	}
	return 0;
}




fputs函数可以把一个字符串写入到文件中。

fgets函数可以从文件中读出一个字符串。


fprintf函数可以把数据以指定的格式写入到任何文件中。
fscanf函数可以从任何文件中以指定的格式读入数据到变量中。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值