我正在编写代码来解析一些输入数据并将其以特殊格式写入文件。我正在从每个字符串标记中删除一个换行符,如下所示:
token[strlen(token)-2] ='\0'
这是-2
因为最后一个元素是\0
. 这很管用。但是,输入数据的最后一个元素没有换行符,因此仅使用它最终会从最后一个输入集中删除倒数第二个字符。
original input: 0.38
after running it through the removal: 0.3
显而易见的解决方案是在删除之前检查换行符是否存在。我这样做:
if(token[strlen(token)-2] =='\n') token[strlen(token)-2] ='\0';
但是,添加 if 子句后,换行符不再删除!我究竟做错了什么?整个代码的片段:
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);
}
}