2011-11-26 61 views
0

我遇到了問題。我有一個代碼應該讀取下面的文本文件,刪除最後一個符號並輸出其他文件中的新文本。我的問題是:如何刪除最後一個符號?我嘗試過的東西,如C++刪除數組中的最後一個符號

for(int j=0;j<10000;j++) 
{ 
    if(simbols[j]=='\0') 
    { 
     cout<<j; 
     minusOne = j-1; 
     minusOne ='\0'; 
     break; 
    } 
} 

但它並沒有真正的幫助和做任何我想要的。任何幫助,將不勝感激!

P.S. 如果這將是任何幫助這裏的全碼:

#include <iostream> 
#include <fstream> 
using namespace std; 
int main() 
{ 
char simbols[10000]; int minusOne; 
ofstream outFile("outFile.out"); 
ifstream inFile("inFile.in"); 

for(int i=0;i<10000;i++) 
{ 
    inFile >> simbols[i]; 
} 

for(int j=0;j<10000;j++) 
{ 
    if(simbols[j]=='\0') 
    { 
     cout<<j; 
     minusOne = j-1; 
     minusOne ='\0'; 
     break; 
    } 
} 

if(outFile.is_open()) 
{ 
    for(int l=0;l<10000;l++) 
    { 
     outFile << simbols[l]; 
    } 
} 

inFile.close(); 
outFile.close(); 
return 0; 

}

+0

爲什麼只不保存文件內容到字符串,然後寫入新的流'fileTextString.substr(0,fileTextString.size() - 1);'? – sll

+0

任何使用小寫ell作爲變量名的代碼都會讓我失望。你認爲你通過選擇這樣一個名字完成了什麼? –

+0

嗯......我上次檢查變量是由編寫代碼的人設置的,而不是第三方用戶設置的。 – RnD

回答

1

它看起來像你對我意味着把

simbols[minusOne] = '\0'; 

,而不是

minusOne = '\0'; 
+0

是的,這是解決方案,該死的我需要多想一些,答案有點顯而易見:D但是,無論如何感謝! – RnD

3

minusOne只是一個整數變量,無關符號的陣列。你想讓它的指針char並指向數組的最後一個元素:

char simbols[10000]; char* minusOne = simpols;

...

cout<<j; 
minusOne += j-1; 
minusOne ='\0'; 
break; 

,當然,這樣做的清潔方式,它是方式伯特詹已建議。

P. S.不能不指出正確的拼寫是「符號」,而不是「simbol」。

0

這是如何刪除字符串緩衝區的最後一個字符:

char *buffer = strdup("hello world"); 

buffer[strlen(buffer) - 1] = '\0'; 
相關問題