gpt4 book ai didi

c - 尝试验证换行符存在后,换行符删除不起作用

转载 作者:行者123 更新时间:2023-12-02 07:03:44 25 4
gpt4 key购买 nike

我正在编写代码来解析一些输入数据并将其以特殊格式写入文件。我正在从每个字符串标记中删除一个换行符:

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

最佳答案

你的换行符应该在 line[strlen(line)-1],但你可能在 Windows 下工作,换行符实际上由一个回车符和一个换行符组成。这可以解释为什么 line[strlen(line)-2]='\0' 成功删除行尾,但测试失败。

关于c - 尝试验证换行符存在后,换行符删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16000569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com