简而言之,我有一个包含二进制数字的文本文件。我需要读取这些数字(不转换为整数或ASCII),并将其正确存储在无符号char Buf中。在电子板上处理完这些数据后,一种方法会从板上读取输出,并将其存储在Buf中。因此,我还需要将Buf中的数据写入输出文件。
首先,我对缓冲区的大小感到怀疑。声明如下所示:
#define Buff_size (long) 255;
unsigned char buf[Buff_size];
-
255在这里代表什么?无符号字符的位,字节或单词?
-
我的数据大小是:2048(数字)* 32(位)= 65536位。但是,输入数据文件的大小为68 KB哪个大小实际上是数据大小,我应该使用哪个大小作为缓冲区大小?
我尝试了一些代码,并且我可以运行完整的代码而不会出现错误。但是,当我打印出缓冲区时,我得到了不正确的数据。这是输入\输出文件的声明:
// Open input and output files.
f_in.open(infilename,std::ios::out);
if (false == f_in.is_open()) {
printf("Error: Input file could not be opened.\n");
return(false);
}
f_out.open(outfilename,std::ios::in);
if (false == f_out.is_open()) {
printf("Error: Output file could not be opened.\n");
return(false);
}
我尝试使用以下两个命令从输入文件f_in中读取输入数据:
1) f_in.read((char*)buf,Buff_size);
2) //f_in >> buf;
当我尝试以以下方式读取buf时:cout << buf << endl;
我使用第一个读取命令在最后得到了正确的数据以及一些伪数据。我假设缓冲区的大小不合适,所以我得到了这些伪数据(非常奇怪的随机字符)。当我使用第二条命令时,只会得到输入数据文件的第一行。
总而言之,我需要从文本文件中读取一些数据并将其存储在缓冲区中。然后将输出数据逐行写入输出文件。