2011-11-26 30 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'; 
相关问题