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を入力した後、16進エディタを使用してバイナリファイルを確認しました。

于 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 に答える