【发布时间】:2015-11-04 13:40:51
【问题描述】:
我想使用 C 从文本文件中打印标签之间的数据。
输入语句: (PERSON) Mark Zuckerberg (/PERSON) 是来自 (LOCATION) USA (/LOCATION) 的企业家。他还是(组织)Facebook(/组织)的首席执行官。
输出:马克扎克伯格美国 Facebook。
我的程序代码是:
const char* getfield(char* line, int num)
{
const char* tok;
for (tok = strtok(line, "/>");
tok && *tok;
tok = strtok(NULL, "<\n"))
{
if (!--num)
return tok;
}
return NULL;
}
int main()
{
char line[500000];
while (fgets(line, 500000, stdin))
{
char* tmp = strdup(line);
printf(" %s\n", getfield(tmp, 2));
free(tmp);
}
}
它只打印马克扎克伯格。标签之间的其他数据没有显示?有人可以帮助我哪里出错了吗?我刚刚开始学习 C 中的文件处理,因此非常感谢您的指导。谢谢。
编辑:请将“(”替换为“”。
【问题讨论】:
-
尝试先调试它...使用你最喜欢的调试器。
-
我认为您的输入语句不包含任何标签(只有一个“>”)。请编辑问题以修正输入语句。
-
0X0nosugar - 请检查编辑部分。
-
@Michael Walz 请检查编辑部分。
-
顺便说一句,您可以将开始/结束标签放在代码块中:
<person>Mark Z</person>