写文件-输出相应字符/字符串到相应的文本文件
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<errno.h>
#include<string.h>
int main()//输入字符到TEST.txt中
{
	FILE *pfwrite=fopen("TEST.txt","w");
	if (pfwrite == NULL)//打开失败情况
	{
		printf("%s\n", strerror(errno));
		return 0;
	}

	//写文件-输出相应字符/字符串到相应的文本文件中

	fputc('x', pfwrite);
	fputc('y', pfwrite);
	fputc('d',pfwrite);

	fputs("abc", pfwrite);
	fputs("abc", pfwrite);
	fputs("abc", pfwrite);
	fclose(pfwrite);//释放资源,关闭文件
	pfwrite = NULL;
	return 0;
}
读取一个字符或字符串从流里
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<errno.h>
#include<string.h>
int main()//读取一个字符或字符串从流里
{
	FILE* pf=fopen("TEST.txt","r");
	if (pf == NULL)
	{
		printf("%s",strerror(errno));
		return 0;
	}
	//读取
	char arr[1024] = { 0 };
	int ch = fgetc(pf);//读取第一个字符并且打印到屏幕上
	printf("%c\n",ch);//当前面被读取过,后面的会接着读取
	int sh = fgets(arr,1024,pf); 
	//读取pf内的字符放到arr数组内,读取1024个字符
	printf("%s\n",arr);
	fclose(pf);
	pf =NULL;
	return 0;
}
fputs不会换行读取一段字符串
int main()
{
	FILE* pf = fopen("test1.txt","w");
	if (pf == NULL)
	{
		return 0;
	}
	
	fputs("hello",pf);//不会换行读取一段字符串
	fputs("xyd", pf);
	fclose(pf);
	pf = NULL;
	return 0;
}
从键盘读取一行文本信息
int main()
{
	//从键盘读取一行文本信息
	char arr[1024] = { 0 };
	fgets(arr,1024,stdin);//从标准输入流读取到arr数组内
	fputs(arr,stdout);//输出到标准输出流

	//等同于
	gets(arr);//无传参
	puts(arr);
	return 0;
}
格式化输入输出--fscanf--fprintf
struct Student
{
	int age;
	float score;
	char name[20];
};
int main()//格式化输入数据
{
	struct Student s = { 20,3.14f,"jack" };
	FILE* pf = fopen("TEST.txt","w");
	if (pf == NULL)
	{
		return 0;
	}
	
	fprintf(pf,"%d %f %s",s.age,s.score,s.name);
	fclose(pf);
	pf = NULL;
	return 0;
}
//格式化输出数据
//struct Student
//{
//	int age;
//	float score;
//	char name[20];
//};
//int main()//格式化输出数据
//{
//	struct Student s = {0};
//	FILE* pf = fopen("TEST.txt","r");
//	if (pf == NULL)
//	{
//		return 0;
//	}
//	fscanf(pf,"%d %f %s",&(s.age),&(s.score),s.name);
//	printf("%d %f %s",s.age,s.score,s.name);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}
面试小题

//eg:对比一组函数

//scanf/fscanf/sscanf

//printf/fprintf/sprintf

//scanf/printf  是针对标准输入流/标准输出流的  格式化输入/输出语句

//fscanf/fprintf 是针对所有输入流/所有输出流的 格式化输入/输出语句

//sprintf--把格式化的数据存储到字符串

//sscanf--是从字符串中读取格式化的数据

//eg

struct Student
{
	int age;
	float score;
	char name[20];
};
int main()
{
	struct Student s = { 100 ,3.14f,"abcdef"};
	struct Student ttt = { 0 };
	char arr[1024] = { 0 };
	//把格式化的数据转换成字符存储在arr中
	sprintf(arr,"%d %f %s",s.age,s.score,s.name);
	//printf("%s\n",arr);
	//从arr中读取格式化的数据到ttt中
	sscanf(arr,"%d %f %s",&(ttt.age),&(ttt.score),&(ttt.name));
	printf("%d %f %s\n",ttt.age,ttt.score,ttt.name);

	return 0;
}