在C中进行Strsep和iCalendar解析

时间:2017-10-01 20:06:02

标签: c icalendar

我在使用C语言解析简单的iCalendar文件时遇到了问题。

char * description, * identifier, *tofree;
tofree = description = strdup(string);
identifier = strsep(&description, ":");
printf("{%s}\n", identifier);
printf("[%s]\n", description);
free(tofree);

string就是我刚从文件中读取的行,例如: BEGIN:VCALENDAR 当我运行这个程序时,我得到以下输出:

{BEGIN}
]VCALENDAR

有人可以帮我确定导致此问题的原因吗?输出应显示“[VCALENDAR]”,我不确定为什么会发生这种情况。

1 个答案:

答案 0 :(得分:5)

您的输入数据以回车符\r结尾。您的代码输出:

[VCALENDAR\r]\n

并且回车将光标放在行的开头,以便]覆盖您的[

最好在扫描前删除结束的行;如果失败,请在\r提供的分隔符中加入\nstrsep(),但您必须再次使用strsep()来获取VCALENDAR令牌