我想知道如何循環我做的解析器。我有幾個文本文件,我不知道該怎麼做。這是代碼。循環解析器
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
int parse(char **argv)
{
/* code that converts a text file to a string called file_contents */
char *target = NULL;
char *target2 = NULL;
char *start, *end;
const char *tag1 = "<item>";
const char *tag2 = "</item>";
if(start = strstr(file_contents, tag1))
{
start += strlen(tag1);
if(end = strstr(start, tag2))
{
target = (char *)malloc(end-start+1);
memcpy(target, start, end-start);
target[end - start] = '\0';
}
const char *tag3 = "<title>";
const char *tag4 = "</title>";
if(start = strstr(target, tag3))
{
start += strlen(tag3);
if(end = strstr(start, tag4))
{
target2 = (char *)malloc(end-start+1);
memcpy(target2, start, end-start);
target2[end-start] = '\0';
printf("%s\n", target2);
}
}
/* same code for other tags */
}
}
free(target);
return 2;
}
這是一個文本的示例。
<item>
<title>blah blah</title>
<otherTags>blah blah</otherTags>
</item> <item>
<title>blah blah</title>
<otherTags>blah blah</otherTags>
</item> <item>
<title>blah blah</title>
<otherTags>blah blah</otherTags>
</item>
我的代碼只解析第一項。我是一個新手,所以引導我。謝謝。
那麼,一個,你的標題說「循環」。這幾乎涉及所有情況......一個*循環*。嘗試一個? – WhozCraig
我不知道該把它放在哪裏:(還有條件 – estudyante
我希望爲了你自己的緣故,你正在把解析器當做學習練習,因爲像你這樣的標記文件的解析器已經存在。只不過是簡化的XML,這意味着幾乎任何XML解析器都應該能夠處理它 –