入力データを解析し、特別なフォーマットでファイルに書き込むコードを作成しています。次のように、各文字列トークンから改行を削除しています。
token[strlen(token)-2] ='\0'
-2
最後の要素が だからです\0
。これだけ効きます。ただし、入力データの最後の要素には改行がないため、それを使用すると、最後の入力セットから最後から 2 番目の文字が削除されます。
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);
}
}