fread 和fwrite操作浮点数的一个问题(linux系统)
2012-12-08 01:50
316 查看
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
相关文章推荐
- 文件编程中的两套操作:标准C库(fread, fwrite,fclose,fopen...)和 系统调用(open, read, write...)
- Ubuntu中使用SSHSecure Shell测试Windows与Linux系统间操作及传输问题解决大全
- Linux 标准IO操作函数fopen fclose fread fwrite fgetc fputc fgets fputs
- linux c语言之文件操作相关函数--fopen(),fopen_s(),fread(),fwrite(),fclose(),
- linux函数代码操练---文件操作-----fwrite和fread
- 手动添加删除Linux系统中的一个用户(2)--全手动操作
- 最近做的一个linux下的聊天系统,遇到的一些问题及解决办法
- (一个代码学会c语言操作数据库)linux上通过c语言操作数据库实现基本的学生信息管理系统(增、删、查、改‘显示)
- 【转】一个问题引发的"血案" 之 文件的读写原理(fread, fwrite, fflush)
- 这一个在OMAP3530/DM3730 ARM A8平台上,LINUX系统下,对GPIO的操作
- 遇到一个Linux系统时间突变问题
- 今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在Win中见过的/r回车符号。由于编辑软件的编码问题,某些IDE的编辑器在编辑完文件之后会自动加上这个^M符号。看起来对我们的源代码没有任何影响,其实并不然,当我们把源代码文件Check In到svn之类
- linux编程之文件操作fseek,fwrite,fread,ftell使用
- Linux下高cpu解决方案(转载) 昨天搞定了一个十万火急的issue,客户抱怨产品升级后系统会变慢和CPU使用率相当高,客户脾气很大,声称不尽快解决这个问题就退货,弄得我们 R&D压力很大,解决这
- 问题阐述: 本人使用mini6410开发了一个sqlite数据库的程序,在mini6410的linux系统下已经能够成功运行了。因为Android使用的也是linux内核,所以我想当然的认为按照同样
- [Linux流操作]使用fread和fwrite函数读写文件
- Linux下文件的相关操作(fopen、fwrite、fread、fseek、ftell)
- 解决Linux下多个进程或线程同时对一个文件进行写操作问题
- 遇到一个Linux文件系统因bios时间错误变成只读的问题
- Linux C 文件操作,系统调用 -- open()、read() 和 标准I/O库 -- fopen()、fread()