La eliminación de nueva línea no funciona después de intentar verificar que existe

Estoy haciendo un código para analizar algunos datos de entrada y escribirlos en un archivo en un formato especial. Estoy eliminando una nueva línea de cada token de cadena como tal:

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

Es-2 porque el ultimo elemento es\0. Esto mucho funciona. Sin embargo, el elemento final de los datos de entrada NO tiene una nueva línea, por lo que al usar solo eso se elimina el segundo carácter del último conjunto de entrada.

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

La solución obvia es verificar si la nueva línea está ahí antes de eliminarla. Hago esto:

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

Sin embargo, después de agregar la cláusula if, la nueva línea ya no se elimina. ¿Qué estoy haciendo mal? Fragmento de todo el código:

    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);
        }
    }

Respuestas a la pregunta(4)

Su respuesta a la pregunta