fread 和fwrite操作浮点数的一个问题(linux系统)
来源:互联网 发布:姿态融合算法 编辑:程序博客网 时间:2024/06/15 13:57
fread 和fwrite操作浮点数的一个问题(linux系统)
操作系统:ubuntu
#include <stdio.h>
int main()
{
FILE *fp;
float write=23.1054;
float read=0;
fp=fopen("location.bat","w+");
fwrite(&write,sizeof(float),1,fp);
fread(&read,sizeof(float),1,fp);
fprintf(stderr,"read is :%f \n",read);
//fread(&read,sizeof(float),1,fp);
//fprintf(stderr,"read second is:%f \n",read);
fclose(fp);
return 0;
}
使用以上程序进行浮点数的写入读出操作时,发现输出结果是:
read is :0.000000
原因是fwrite之后必须关闭文件,重新打开之后才能使用fread,相当于你得先保存文件才能正确读取内容。
fwrite在对文件进行写入操作时,并不会直接写入磁盘,而是写入到内核缓冲区中,内核会在适当的时候将数据写入到磁盘中
修改成下面这样就可以了:
#include <stdio.h>
int main()
{
FILE *fp;
float write=23.1054;
float read=0;
fp=fopen("location.bat","w+");
fwrite(&write,sizeof(float),1,fp);
fclose(fp);
fp=fopen("location.bat","r+");
fread(&read,sizeof(float),1,fp);
fprintf(stderr,"read is :%f \n",read);
fclose(fp);
return 0;
}
原文http://hi.baidu.com/jackenne/item/3c86a309be4b9e863c42e283
- fread 和fwrite操作浮点数的一个问题(linux系统)
- Linux下用C语言fopen、fread和fwrite函数对二进制文件的操作
- 【转】一个问题引发的"血案" 之 文件的读写原理(fread, fwrite, fflush)
- Linux下文件的相关操作(fopen、fwrite、fread、fseek、ftell)
- C语言文件流操作的二进制读写和定位(fwrite、fread、fseek)
- C/C++文件的操作(fread() fwrite())
- C/C++文件的操作(fread() fwrite())
- fread()和fwrite()函数读写文件操作
- 文件操作之fread()和fwrite()函数
- 使用fwrite,fread需要注意的问题
- fread / fwrite 返回 0 的问题
- error:fread / fwrite 返回 0 的问题
- fseek 和fread、fwrite的区别
- fseek 和fread、fwrite的区别
- fwrite和fread函数的用法小结
- fread和fwrite使用的题..
- fwrite和fread函数的用法小结
- fread函数和fwrite函数的用法
- 使用pull解析器读取xml文件
- ISP DSP diff
- 如何在linux下运行python程序
- eclipse中使用weblogic server920_win32.exe
- 取得程序当前的EIP地址(x86)
- fread 和fwrite操作浮点数的一个问题(linux系统)
- C++中的快排
- Spring jdbcTemplete datasource
- java中数据在内存中的存储详解
- poj 2352 线段树
- GPRS怎样将数据传入数据库
- Merge Sorted Array
- C# 文档处理方法
- java之jvm学习笔记九(策略文件)