2011-06-09 40 views
1

我正在從http服務器下載一個jsp文件在c。但我得到的文件內容如圖所示獲取指定的內容到緩存中c

<HTML> 
<BODY> 
Hello, user 
</BODY> 
</HTML> 

進入緩衝區。現在我想捕捉「你好,用戶」只進入我的緩衝區。誰能幫我在C.

找到代碼
+2

發佈一些代碼,將幫助人們回答這個問題多了很多容易和有效。 – MGwynne 2011-06-09 11:43:43

+1

您在問題中說「所示文件的內容」,但我什麼也沒看到。 – 2011-06-09 11:44:13

+1

由於剝離了HTML標籤而被隱藏。修正了。 – Mario 2011-06-09 11:46:34

回答

0

基本上你要掃描的緩衝區,而忽略一切,這是<>之間:

char *get_text (char *dst, char *src) { 
    int html = 0; 
    char ch; 

    while (ch = *src++) { 
    if (ch == '<' || ch == '>') { 
     html = (ch == '<'); 
    } else if (!html) { 
     *dst++ = ch; 
    } 
    } 

    *dst = '\0'; 
    return dst; 
} 
0

您可以嘗試剝離HTML,但是這可能不是如果標籤外有更多內容(需要更具體的過濾,例如檢查周圍的標籤名稱),則可以正常工作。

未經測試,但應該工作:

char *html = ...; // html being a pointer to the document's contents 
int ip = 0; // the input position 
int op = 0; // the ouput position 
int in_tag = 0; // are we inside a html tag? 
char c; // current character 
while(c = html[ip++]) 
{ 
    if(c == '<') 
     in_tag = 1; 
    else if(c == '>') 
     in_tag = 0; 
    else if(c == '\n' || c == '\r') // strip line breaks 
     ; 
    else if(!in_tag) 
     html[op++] = c; 
} 
html[op] = '\0';