46-关于文件(C语言)

文件:
标准输入设备:键盘
标准输入文件:常开,其文件指针 stdin;
标准输出设备:显示器
标准输出文件:常开,其文件指针 stdout;
文件名:全路径,相对路径
后缀名:关联默认打开它的应用程序
文件:文本文件,二进制文件
1:能看见的是字符1,数字1看不见
文件的操作
fopen:创建或者打开文件 常见的方式:
w:写打开,如果文件不存在则创建新文件,如果文件存在删除原内容
r:读打开,文件必须存在
b:以二进制的形式打开,一般和w或者r联合使用 ,“wb”,“rb”
fclose:关闭文件
fread:从文件中读数据存放到内存中,返回读取成功的项目数,这个非常重要.但返回值小于要求读取的数量时则可以判断文件读取结束
fwrite:将内存(变量或者数组)的数据往文件中写数据
fseek:移动文件位置指针(光标)
‘’:转义字符
在Windows的路径一定是双斜线,例如"D:\hhh\1.txt";

数组和指针相互转换的两个等式.一定要记得
	p[i] == *(p+i)
	*(arr+i) == arr[i]这里是引用
//随机访问文件数据
int main()
{
	const char *path = "D:\\1.txt";
	FILE *fr = fopen(path,"rb");
	assert(fr != NULL);

	int buf[100];
	int len = fread(buf,sizeof(int),100,fr);
	for(int i=0;i<len;i++)
	{
		printf("%d ",buf[i]);
	}

	//fseek(fr,0,SEEK_SET);//文件开头
	fseek(fr,-40,SEEK_END);//文件开头

	int buf2[100];
	int len2 = fread(buf2,sizeof(int),100,fr);
	printf("\n%d\n",len2);
	for(int i=0;i<len2;i++)
	{
		printf("%d ",buf2[i]);
	}

	fclose(fr);
	return 0;
}
//读二进制数据
int main()
{
	const char *path = "D:\\1.txt";
	FILE *fr = fopen(path,"rb");
	assert(fr != NULL);

	int buf[3];
	int len;
	while((len=fread(buf,sizeof(int),3,fr)) > 0)
	{
		for(int i=0;i<len;i++)//输出buf值
		{
			printf("%d ",buf[i]);
		}
	}

	int buf;
	while(fread(&buf,sizeof(int),1,fr) > 0)
	{
		printf("%d ",buf);
	}

	int buf[100];
	int len = fread(buf,sizeof(int),100,fr);
	for(int i=0;i<len;i++)
	{
		printf("%d ",buf[i]);
	}

	fclose(fr);
	FILE *fw = fopen(path,"wb");
	assert(fw != NULL);

	int arr[] = {1,2,3,4,5,6,7,8,9,10};
	fwrite(arr,sizeof(int),sizeof(arr)/sizeof(arr[0]),fw);

	fclose(fw);
	return 0;} 
//读文本文件数据
int main()
{
	//const char *path = "D:\\1\\1.txt";
	const char *path = "D:\\1.txt";
	FILE *fw = fopen(path,"w");//不能创建文件夹
	assert(fw != NULL );
	FILE *fr = fopen(path,"r");//文件必须存在
	assert(fr != NULL);//一定要有

	const char *str = "hello world";

	fwrite(str,sizeof(char),strlen(str),fw);
	char buf[100] = "";//存放从文件中读取的数据
	int len = fread(buf,sizeof(char),100,fr);
	printf("%d,%s\n",len,buf);

	fclose(fr);

	return 0;
}
int main()
{
	const char *path = "D:\\1.txt";
	//printf("%s\n",path);
	FILE * fw = fopen(path,"w");

	//int n = 1;
	//fwrite(&n,sizeof(int),1,fw);//写二进制数据(内存数据,不做转换)

	//写文本数据
	const char *str = "hello world";
	//fwrite(str,sizeof(char),1,fw);//error
	//fwrite(str,sizeof(char),sizeof(str)/sizeof(str[0]),fw);//error
	//fwrite(str,sizeof(char),strlen(str),fw);//ok
	//fwrite(str,sizeof(char),strlen(str)+1,fw);//包含'\0'  '\0':是字符串的结尾标记,文件并不需要
	fwrite(str,sizeof(char),strlen(str),stdout);

	fclose(fw);

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林林ZEYU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值