0

这基本上是我用来存储整个文件的代码的一部分,并且运行良好......但是当我尝试存储大于 120 的整数或类似的东西时,程序编写的东西看起来像是一堆垃圾,而不是我想要的整数。有小费吗 ?我是一名大学生,不知道发生了什么。

    int* temp

    temp = (int*) malloc (sizeof(int));

    *temp = atoi( it->valor[i].c_str() );

    //Writes the integer in 4 bytes
    fwrite(temp, sizeof (int), 1, arq);

    if( ferror(arq) ){
      printf("\n\n Error \n\n");
      exit(1);
    }

    free(temp);

我已经检查了该atoi部分,它确实返回了我想写的数字。

4

2 回答 2

2

我更改并添加了一些代码,它工作正常:

#include <iostream>

using namespace std;

int main()
{

    int* temp;
    FILE *file;
    file = fopen("file.bin" , "rb+"); // Opening the file using rb+ for writing
                                      // and reading binary data
    temp = (int*) malloc (sizeof(int));

    *temp = atoi( "1013" );           // replace "1013" with your string

    //Writes the integer in 4 bytes
    fwrite(temp, sizeof (int), 1, file);

    if( ferror(file) ){
      printf("\n\n Error \n\n");
      exit(1);
    }

    free(temp);
}

确保您使用正确的参数打开文件,并且您提供给 atoi(str) 的字符串是正确的。

输入数字 1013 后,我使用十六进制编辑器检查了二进制文件。

于 2012-11-04T13:55:22.997 回答
1
int i = atoi("123");
std::ofstream file("filename", std::ios::bin);
file.write(reinterpret_cast<char*>(&i), sizeof(i));
  • 不要在这里使用指针。
  • 永远不要在 C++ 中使用malloc/ 。free
  • 使用 C++ 文件流,而不是 C 流。
于 2012-11-04T14:06:43.073 回答