2015-06-09 148 views
1

這似乎應該是一個基本的C++過程,但我不熟悉數據輸出。將CRC數據寫入.txt文件

當我打印數據而不輸出到文本文件時,我得到正確的值。

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 %03d\n", idstring, computeCrc(idstring)); 
} 
myfile.close(); 

其他一切工作正常,我知道是產生CRC正確。只需要獲得正確的輸出。

我能夠通過在調試屬性命令參數中添加「> CRC.txt」將控制檯屏幕輸出到文本文件,但我只是想知道如何將ofstream方法合併到此文件中。

在此先感謝。

+0

@rozina哎呦看起來是:int_cdecl – terbubbs

+1

我會刪除for循環,並開始調試運行在一個固定的數字。還有一個問題,爲什麼你將sprintf的結果保存到文件中? – rozina

+0

說實話,不確定。使用源代碼我沒有寫,並試圖輸出它是我所做的一切。 @rozina – terbubbs

回答

5

您不會將保存的文件保存到文件中。首先你保存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(); 
+0

「%s%03d \ n」這會有什麼意義?我試過這段代碼,當'idstring'輸出正確時,computeCrc(idstring)現在被作爲單個隨機符號和字符輸出。 – terbubbs

+0

conputerCrc(idstring)實際上是一個無符號字符。我應該將它轉換爲int嗎?使用atoi?或類似的東西? – terbubbs

+0

所以我試圖將computeCrc(idstring)轉換爲int,但它沒有返回正確的3位數值。 – terbubbs

3

你ouputing的sprintf()printf()該文件的回報是什麼。 sprintf()printf()的回報爲int,而不是您正在創建的字符串。要輸出字符串,你需要更改您的代碼

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

感謝您的澄清。 – terbubbs