我有一个缓冲区,其中包含c:
中的以下文字POST /home/alex/p2download HTTP/1.1
Host: localhost:1767
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://localhost:1767/home/alex/p2download
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 11
pattern=*.c
我想要的只是采取模式。在那个例子中只有“* .c” 我该怎么办?
答案 0 :(得分:2)
你可以这样做:
char *pCh;
char *pattern = "pattern=";
pCh = strstr(buffer, pattern);
if(pCh)
pCh += strlen(pattern);
假设缓冲区包含您提供的文字,pCh
将指向'*'
中的*.c
。
答案 1 :(得分:0)
您首先要在文字中找到代码字的位置,为此您可以使用const char * strstr ( const char * str1, const char * str2 );
来返回str2
中str1
第一次出现的地址
然后,您可以使用各种C * str函数在新变量中提取http POST内容的内容,
char* src = getYourHttpMessage();
char tag[] = "pattern=";
char* pattern_start = strstr(src, tag);
char* to_extract = NULL;
int to_extract_length = 0;
if(pattern_start != NULL) { // found the pattern
for(to_extract = pattern_start + sizeof(tag); *to_extract != '\n'; to_extract++, to_extract_length++);
to_extract = malloc(length_to_extract);
strncpy(to_extract, pattern_start+sizeof(tag), to_extract_length);
}