2

我有 unsigned short int(从 0 到 65535),我必须将它保存到文件中,使用 stdio 并消耗 2 个字节,但我不知道如何。

有什么建议么?

4

3 回答 3

2

我将使用联合(是的,我不喜欢使用 cast..):

template <typename T>
union Chunk {
  T _val;
  char _data[sizeof(T)];
};

int main(void) {
   std::ofstream output;
   Chunk<short> num;
   num._val = 42;
   output.open("filepath.txt");
   if (output.good()) {
       output.write(num._data, sizeof(num));
   }
   output.close();
   return 0;
}
于 2011-02-26T16:05:12.163 回答
1

http://www.cplusplus.com/doc/tutorial/files/阅读全文很好,但您需要的信息在文章下半部分的“二进制文件”中。

ofstream outputFile;
outputFile.open("yourfile.dat");
unsigned short int i;
i = 10;
outputFile.write(&i, sizeof(i));

outputFile.close();
于 2011-02-26T15:37:47.850 回答
1

如果您必须使用 stdio.h(而不是 iostream):

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  FILE* f;
  unsigned short int i = 5;
  f=fopen("yourfile","w");
  if(f == NULL)
    {
      perror("yourfile is not open");
      exit(EXIT_FAILURE);
    }
  fwrite(&i,sizeof(i),1,f);
  fclose(f);
  return 0;
}
于 2011-03-14T09:25:56.037 回答