C ++删除数组中的最后一个符号

时间:2011-11-26 19:33:48

标签: c++ arrays fstream

我遇到了一个问题。我有一个代码应该读取以下文本文件,删除最后一个符号并在其他文件中输出新文本。我的问题是:如何删除最后一个符号?我尝试过像

这样的事情
 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;

}

3 个答案:

答案 0 :(得分:3)

minusOne只是一个整数变量,与符号数组无关。你想让它成为char的指针并指向数组的最后一个元素:

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

...

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

当然,干净的方式是 bert-jan 建议的方式。

P上。 S.不能不指出正确的拼写是“ symbol ”,而不是“simbol”。

答案 1 :(得分:1)

在我看来,你打算放

simbols[minusOne] = '\0';

而不是

minusOne = '\0';

答案 2 :(得分:0)

这是删除字符串缓冲区的最后一个字符的方法:

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

buffer[strlen(buffer) - 1] = '\0';