2010-05-05 44 views
1

我很難搞清楚如何在我的CGI腳本中實現grep。基本上我會收到一個例如。 1500從HTML頁面。然後,CGI腳本運行並將1500與文本文件進行比較。當它找到1500時,它會打印整行並將其顯示在網頁上。請提供一些關於如何操作的提示和指示。我知道這涉及grep,但我不知道如何放入。如何實現grep到CGI腳本請?

#include <stdio.h> 
#include <stdlib.h> 
int main(void) 
{ 
char *data; 
long m,n; 
printf("%s%c%c\n", 
"Content-Type:text/html;charset=iso-8859-1",13,10); 
printf("<TITLE>Webpage of Results</TITLE>\n"); 
printf("<H1>Temperatures</H1>\n"); 
data = getenv("QUERY_STRING"); 

HTML傳遞變量time = 1500。我明白(糾正我,如果我錯了)QUERY_STRING將包含1500?

+0

您的CGI腳本是否必須在C?像這樣的東西在另一種語言中會更簡單,例如Perl的。 – 2010-05-05 21:18:19

+0

不幸的是,它的確如此,是的,我明白這會在perl中容易得多,因爲我已經看到了很多這樣的例子。 – 2010-05-05 21:24:50

回答

0

對於形式whatever?query-string的URL,在環境變量QUERY_STRING包含完整query-string - 在你的情況下time=1500或相似。

您需要記住的是,可能有多個字段/值正在通過,由&分隔。通過使用strtok(),您可以逐個檢索查詢字符串的各個部分,strcmp()可讓您將它們與其他字符串進行比較。

如果你找到了正確的道理,你需要用一個文件來工作:

+0

嗨gf,感謝您的回覆,以及我知道我不會有任何其他變量(現在),因爲我專門設計了這樣的HTML表單。在添加更多heh之前,需要先獲取一個變量。從你說的話來看,我根本不需要使用grep呢? – 2010-05-05 21:32:10

+0

永遠不要相信任何東西發送給你你想要的東西:)用'grep'你的意思是調用一個外部過程?我建議你自己在C語言中調用grep並檢索它的輸出並不容易。 – 2010-05-05 21:35:50

+0

嗯......我希望它能給我發送我想要的哈哈。那麼基本上我會解釋我想要做什麼: 當收到TIME(1500) 打開文本文件和查找字符串(1500) 打印字符串爲HTML。 真的很簡單,但我不知道該怎麼做><爲什麼我想要幾個指針。 – 2010-05-05 21:40:49

0

C中grep的一些非常直接的模擬是strstr()函數

+0

我已經快速瀏覽了strstr()。據我所知,它用於PHP? – 2010-05-05 21:53:33

+0

@Joey jie:參見http://www.cplusplus.com/reference/clibrary/cstring/strstr/ – 2010-05-05 22:18:25