C语言文件输入输出函数fread,fwrite的使用注意事项

/* 直接输入输出函数:  
int fread(void*pointer,int size,int count,FILE*fp)
int fwrite(void*pointer,int size,int count,FILE*fp) 
pointer是一个指针,在fread函数中它表示存放输入数据的首地址;在fwrite函数中,它表示存放输出数据的首地址
size表示数据的字节数
count表示要读出的数据个数
fp表示文件指针 

*/
# include<stdio.h>
int  main()
{   
	FILE*fp;
    int iarray[6]={1,49,2,50,3,51},ia;
	 system("cls");
	//clrscr();
  if((fp=fopen("awe1.txt","w"))==NULL)
	{
		printf("Cannot open this file\n");
		return 0; 
	}
	else
	{
		fwrite(iarray,sizeof(iarray),1,fp);
		fclose(fp);
	}
	 if((fp=fopen("awe1.txt","r"))==NULL)
	{
		printf("Cannot open this file\n");
		return 0; 
	}
	else
	{
		while(!feof(fp)) 
		{
			fread(&ia,sizeof(ia),1,fp);
		    printf("%5d",ia);// printf("%5c",ia);
		}
		
	}
	fclose(fp);
	 
	
	 
} 

总结:
从结果看来,利用函数fwrite写入文件中的数据存储格式为二进制,利用fread函数读出。fwrite是将内存中的二进制数据直接写入文件中,而不发生字符转化,与格式化输入输出函数fscanf和fprintf是将内存中的二进制数据转化为ascii码后写入到文件,读出时又将码转化为二进制数。因此使用fwrite和fread效率会更高一些。
举个具体例子说明效率高的原因:
比如说整数103,它的二进制码为00000000 00110111,用fprintf格式化写入到文件中时,它要把103转为字符"103",然后把字符’1’,‘0’,'3’对应的二进制码写入到文件中,这样你打开文件看到的就是103了,fscanf正好这个操作顺序反过来,由于fwrite直接把整数103的二进制码存入文件,不经过上边那个转换过程,所以打开文件你看不懂是啥,如下图:
在这里插入图片描述
而且我们还可以看到,用fwrite更节省存储空间,你看上边存储整数103,fprintf要用3个字节,而fwrite仍然只需要2个字节即可,所以不仅时间效率高,而且空间效率也高

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
fwritefread函数C语言中用于文件读写的函数,它们都是标准库函数,定义在头文件stdio.h中。 fwrite函数的原型如下: ```c size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream); ``` 参数说明: - ptr:要写入的数据的指针。 - size:每个数据项的大小(单位为字节)。 - count:要写入的数据项的数量。 - stream:文件指针。 返回值为成功写入的数据项的数量。 fwrite函数用于将数据写入文件中,它按照指定的大小和数量将数据写入文件中。如果写入成功,函数返回成功写入的数据项的数量,否则返回0。 例如,下面的代码将一个整数数组写入文件中: ```c #include <stdio.h> int main() { int arr[] = {1, 2, 3, 4, 5}; FILE *fp = fopen("data.txt", "wb"); if (fp == NULL) { printf("Failed to open file.\n"); return 1; } fwrite(arr, sizeof(int), 5, fp); fclose(fp); return 0; } ``` fread函数的原型如下: ```c size_t fread(void *ptr, size_t size, size_t count, FILE *stream); ``` 参数说明: - ptr:要读取数据的缓冲区的指针。 - size:每个数据项的大小(单位为字节)。 - count:要读取的数据项的数量。 - stream:文件指针。 返回值为实际读取的数据项的数量。 fread函数用于从文件中读取数据,它按照指定的大小和数量从文件中读取数据。如果读取成功,函数返回实际读取的数据项的数量,否则返回0。 例如,下面的代码从文件中读取一个整数数组: ```c #include <stdio.h> int main() { int arr[5]; FILE *fp = fopen("data.txt", "rb"); if (fp == NULL) { printf("Failed to open file.\n"); return 1; } fread(arr, sizeof(int), 5, fp); fclose(fp); for (int i = 0; i < 5; i++) { printf("%d\n", arr[i]); } return 0; } ``` 以上代码会输出以下结果: ``` 1 2 3 4 5 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值