将CRC数据写入.txt文件

Writing CRC data to .txt file

本文关键字:txt 文件 CRC 数据      更新时间:2023-10-16

这看起来应该是一个基本的c++过程,但我不熟悉数据输出。

当我打印数据而不输出到文本文件时,我得到了正确的值。

example: 00150017000 181

当打印到一个文本文件时,我得到的是:

11161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116111611161116
下面是我的代码:
ofstream myfile;
myfile.open("C:\CRC.txt");
for (i = 0; i < 200; i++, id++)
{
    myfile << sprintf(idstring, "%011d", id);
    myfile << printf("%s %03dn", idstring, computeCrc(idstring));
}
myfile.close();

其他一切工作正常,我知道CRC是正确生成的。只需要得到正确的输出。

我能够通过在调试属性命令参数中添加"> CRC.txt"将控制台屏幕输出到文本文件,但我只是想知道如何将ofstream方法合并到其中。

您保存到文件中的内容并不是您认为保存的内容。首先保存sprintf()函数的结果,在本例中为11。然后保存printf()函数的结果,在您的情况下是11 + 1(空格)+ 3 + 1 (n) = 16。所以结果是200乘以1116。

你想做什么

char tempBuf[12];
ofstream myfile;
myfile.open("C:\CRC.txt");
for (i = 0; i < 200; i++, id++)
{
    sprintf(tempBuf, "%011d", id);
    myfile << tempBuf << ' ';        
    sprintf(tempBuf, "%03d", computeCrc(tempBuf));
    myFile << tempBuf << 'n';
}
myfile.close();

sprintf()printf()的返回值输出到文件中。sprintf()printf()的返回值是int,而不是您正在创建的字符串。要输出字符串,您需要将代码更改为

for (i = 0; i < 200; i++, id++)
{
    sprintf(idstring, "%011d", id);
    myfile << idstring;
    myfile << computeCrc(idstring) << endl;
}