Arrays 在C语言中从字符数组中删除颜色代码

Arrays 在C语言中从字符数组中删除颜色代码,arrays,colors,char,strip,Arrays,Colors,Char,Strip,我刚想到一个我一直困扰的问题。我必须从C中的字符数组中删除颜色代码。假设消息如下: [15:51:55] [error]: {ffffff}you already have this vehicle!r "police car (lspd)" (modelid: 596, vehicleid: 306) 颜色代码是{和}字符内的颜色代码。我编写了这个函数,第一个参数是原始消息,第二个参数是存储原始消息的数组,没有颜色代码 void eliminarCodigosColores(char *me

我刚想到一个我一直困扰的问题。我必须从C中的字符数组中删除颜色代码。假设消息如下:

[15:51:55] [error]: {ffffff}you already have this vehicle!r "police car (lspd)" (modelid: 596, vehicleid: 306)
颜色代码是{和}字符内的颜色代码。我编写了这个函数,第一个参数是原始消息,第二个参数是存储原始消息的数组,没有颜色代码

void eliminarCodigosColores(char *mensaje, char *destino)
{
    for (int i = 0; i < strlen(mensaje); i++)
    {
        if ((mensaje[i] != '{' && mensaje[i + 7] != '}') || (mensaje[i - 1] != '{' && mensaje[i + 6] != '}') || 
            (mensaje[i - 2] != '{' && mensaje[i + 5] != '}') || (mensaje[i - 3] != '{' && mensaje[i + 4] != '}') ||
            (mensaje[i - 4] != '{' && mensaje[i + 3] != '}') || (mensaje[i - 5] != '{' && mensaje[i + 2] != '}') ||
            (mensaje[i - 6] != '{' && mensaje[i + 1] != '}') || (mensaje[i - 7] != '{' && mensaje[i] != '}'))
        {
            *destino++ = mensaje[i];
        }
    }
}
void eliminarcodigoscolors(char*mensaje,char*destino)
{
for(int i=0;i
它不能正常工作(颜色代码没有删除),我不知道出了什么问题。有更好或更简单的方法吗


提前谢谢。

我只需看一个开头
{
,看看后面是否有
}
7个字符,然后跳过所有字符:

void eliminarCodigosColores(const char *mensaje, char *destino)
{
    int i = 0, j = 0;

    while ( i < strlen(mensaje) )
    {
        if ((i + 7 < strlen(mensaje)) &&
            (mensaje[i] == '{') &&
            (mensaje[i + 7] == '}'))
        {
            i += 8;
        }
        else
        {
            destino[j++] = mensaje[i++];
        }
    }

    destino[j] = 0;
}
void eliminarcodigoscolors(const char*mensaje,char*destino)
{
int i=0,j=0;
而(我