【发布时间】:2015-11-05 07:34:06
【问题描述】:
我想使用 C 从文本文件中打印标签之间的数据。
输入语句:
<PERSON> Mark Zuckerberg </PERSON> is a entrepreneur from <LOCATION> USA </LOCATION>. He is also the CEO of <ORGANIZATION> Facebook </ORGANIZATION>.
输出:马克扎克伯格美国 Facebook。
我的程序代码是:
const char* getfield(char* line, int num)
{
const char* tok;
for (tok = strtok(line, "/>");
tok && *tok;
tok = strtok(NULL, ">"))
{
if (!--num)
return tok;
}
return NULL;
}
int main()
{
char line[500000];
while (fgets(line, 500000, stdin))
{
char *arg = line;
const char *tok;
while ((tok = getfield(arg, 2)) != NULL) {
printf("%s\n", tok);
arg = NULL;
}
}
}
我的输出是:
Mark Zuckerberg </PERSON
USA </LOCATION
Facebook </ORGANIZATION
我想摆脱 </Tag 并只获得 Mark Zuckerberg USA Facebook 作为输出。我需要在哪里更改代码?
【问题讨论】:
-
这是How to parse data between tags from a text file in C 的精确克隆。 (好吧,代码变了,但问题和海报可能是一样的。)
-
是的。我仍然有这个问题。
-
你已经得到了关于这个问题的详细而有用的答案,解释了你的代码的缺点和误解。研究它们。 SO 不是重复问同一个问题,直到你得到你喜欢的答案。
-
必须用 C 编写 id 吗?操作字符串是 C 总是很痛苦的;如果不需要,我建议使用 sed。
-
我是编程新手。因此,感谢您的帮助。我已根据建议更改了代码并对其进行了修改。我感谢帮助我的帮助者。我只是想知道我哪里出错了,什么是正确的代码。