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