A remoção de nova linha não funciona depois de tentar verificar se ela existe

Eu estou fazendo um código para analisar alguns dados de entrada e gravá-lo em um arquivo em uma formatação especial. Estou removendo uma nova linha de cada token de string da seguinte forma:

token[strlen(token)-2] ='\0'

Isto é-2 porque o último elemento é\0. Isso funciona muito. No entanto, o elemento final dos dados de entrada NÃO possui uma nova linha, portanto, usar apenas isso acaba removendo o penúltimo caractere do último conjunto de entrada.

original input: 0.38
after running it through the removal: 0.3

A solução óbvia é verificar se a nova linha está lá antes de remover. Eu faço isso:

if(token[strlen(token)-2] =='\n') token[strlen(token)-2] ='\0';

No entanto, após adicionar a cláusula if, a nova linha não é mais removida! O que estou fazendo de errado? Snippit do código inteiro:

    while((token = strsep(&line, ",")) != NULL){
        if(x++ == 1){
            fwrite("    <item>\n", 11, 1, fw);
            fwrite("        <name>", 14, 1, fw);
            fwrite(token, strlen(token), 1, fw);
            fwrite("</name>\n", 8, 1, fw);
        }
        else if(isdigit(token[0])) {
            if(token[strlen(token)-2] =='\n') token[strlen(token)-2] ='\0';
            fwrite("        <SPC>", 13, 1, fw);
            fwrite(token, strlen(token), 1, fw);
            fwrite("</SPC>\n", 7, 1, fw);
            fwrite("    </item>\n", 12, 1, fw);
        }
    }

questionAnswers(4)

yourAnswerToTheQuestion