Das Entfernen von Zeilenumbrüchen funktioniert nicht, nachdem versucht wurde, das Vorhandensein zu überprüfen

Ich erstelle einen Code, um einige Eingabedaten zu analysieren und in einer speziellen Formatierung in eine Datei zu schreiben. Ich entferne eine neue Zeile aus jedem Zeichenfolgentoken wie folgt:

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

Es ist-2 weil das letzte Element ist\0. So viel funktioniert. Das letzte Element der Eingabedaten enthält jedoch KEINE Zeilenumbrüche. Wenn Sie also nur diese verwenden, wird das vorletzte Zeichen aus dem letzten Eingabesatz entfernt.

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

Die naheliegende Lösung besteht darin, vor dem Entfernen zu überprüfen, ob der Zeilenumbruch vorhanden ist. Ich mache das:

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

Nach dem Hinzufügen der if-Klausel wird der Zeilenumbruch jedoch nicht mehr entfernt! Was mache ich falsch? Snippit aus dem ganzen Code:

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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage