想将float型long型double型等数据类型写入文件如下程序所示理想中的结果应该是这样

hello word!just do it!3.123445但是运行该代码后面的3。123445显示不出来而且是乱码求高手帮忙指点有什么好的办法么请指教谢谢

#include <iostream>
#include <unistd.h>
#include <fcntl.h>
#include <string>
#include <stdio.h>
#include <string.h>
using namespace std;    
    int main(int argc,char **argv)
    {
      FILE *fp1;
      int fd;
      long long fo = 3.123445;
      char b[8];
      memcpy(b,&fo,sizeof(unsigned long));
      string str1 = "hello word!";
string str2 = "just do it!";    
      fp1 = fopen("test.txt","a+");
     fd = fileno(fp1);
    write(fd,str1.c_str(),str1.length());
write(fd,str2.c_str(),str2.length()); 
write(fd,b,8);

    }

推荐图书

  • C++ Primer中文版(第4版)
  • More Effective C++:35个改善编程与设计的有效方法(中文版)
  • 设计模式:可复用面向对象软件的基础
  • Linux系统管理技术手册(第2版)


1个回答

这里:write(fd,b,8);

b是二进制,当然是乱码了,你以为从fo memcpy一下就变成字符串啦?

fprintf(fp1, "%ld", fo);

试试。