2012-03-05 117 views
1

我使用下面的函數寫一些字符串到一個文件...文件寫不正確

void writeText(const char* desc){ 
     FILE * pFile; 
    pFile = fopen ("CycleTestInfo.txt","a+"); 
    fputs (desc,pFile); 
    fclose(pFile); 
} 

...內部的for循環:

for(int i=0; i<numCycles; i++){ 
    string cycle("---NEW CYCLE "); 
    cycle+=(char)i; 
    cycle+= "---\r\n"; 
    writeText(cycle.c_str()); 
} 

我有兩個問題雖然。 i不會顯示在我的文本文件中,並且換行符不會顯示在我的文本文件中寫入的第一個字符串。例如,如果numCycles是4,我會在我的文本文件中得到以下輸出。

---NEW CYCLE Cycle Done! 

---NEW CYCLE --- 

Cycle Done! 

---NEW CYCLE --- 

Cycle Done! 

---NEW CYCLE --- 

Cycle Done! 

當我希望它看起來像這樣:

---NEW CYCLE 1--- 

Cycle Done! 

.... 

回答

1

i犯規在我的文本文件
這是因爲你與ASCII價值1寫入字符顯示出來。性格'1'的價值是不同的,可以通過添加的'0'值輕鬆地檢索到i這樣的:char c = '0' + i;

換行不會出現寫在我的文本文件中的第一個字符串
第一次i是等於0這也是終止字符'\0'

退房本文的值:C++ Character Constants

0

我懷疑(char)i是去那裏的路上,你應該嘗試(char)((int)'0' + i)

+0

爲什麼這個'(INT)'投? – LihO 2012-03-05 20:31:40