Usuwanie nowej linii nie działa po sprawdzeniu, czy istnieje

Tworzę kod, który analizuje niektóre dane wejściowe i zapisuje je w pliku w specjalnym formatowaniu. Usuwam nową linię z każdego tokena jako tak:

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

To jest-2 ponieważ ostatnim elementem jest\0. To działa. Jednak ostatni element danych wejściowych NIE ma nowej linii, więc użycie właśnie tego kończy się usunięciem drugiego do ostatniego znaku z ostatniego zestawu danych wejściowych.

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

Oczywistym rozwiązaniem jest sprawdzenie, czy nowa linia jest tam przed usunięciem. Robię to:

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

Jednak po dodaniu klauzuli if nowa linia nie jest już usuwana! Co ja robię źle? Snippit z całego kodu:

    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