[英]C: Parsing substring from u_char*
我正在努力尋找u_char *中子字符串的開頭,正在嘗試獲取“ q =”的位置來解析URL中的google搜索。這讓我發瘋了,如果有人可以幫助我,我將不勝感激。 我的C語言知識有限。
這是我停留在的行: if(g_start = strstr(final_url, "q=") != NULL){
這是我的代碼的一部分:
int url_length,host_length, search_length;
u_char *url, *end_url, *final_url, *host, *end_host, *final_host, *ghostUrl, *google, *g_end, *g_start;
/* copy host + url to a null terminated c string */
final_url = (u_char*)malloc(url_length + 1); //malloc ( length ) +1 for \0
final_host = (u_char*)malloc(host_length +1);
strncpy((char*)final_host,(char*)host, host_length);
strncpy((char*)final_url, (char*)url, url_length);
final_url[url_length] = '\0'; //null terminerer
final_host[host_length] = '\0';
/* Everything above works fine.. */
/* final_url looks like this: /search?biw=320&bih=570&tbm=isch&sa=1&ei=M0eFUsXvHOO54AS644GYCQ&q=dogs&oq=dogs&gs_l=mobile-gws-serp.12...0.0.0.1991659.0.0.0.0.0.0.0.0 */
if(strcmp("www.google.no", final_host) == 0){ /* host: www.google.no */
if(g_start = strstr(final_url, "q=") != NULL){ /* This fails.. */
printf("debug: search starts at %s\n", g_start); /* I have no idea.. how to get integer position from strstr() */
g_end = strchr((char*)g_start,'&'); // ?q=dogs[&]
search_length = g_end - g_start;
printf("DEBUG: search_length: %i\n",search_length);
google = (u_char*)malloc(search_length +1);
strncpy((char*)google, (char*)g_start, search_length);
google[search_length] = '\0'; //null terminator
運算符優先級意味着
if(g_start = strstr(final_url, "q=") != NULL)
被評估為
if(g_start = (strstr(final_url, "q=") != NULL))
它將為g_start
分配1
或0
。
您需要在行的開頭使用括號()
,以獲得所需的求值順序:
if((g_start = strstr(final_url, "q=")) != NULL)
// ^ ^
請注意,您的編譯器應已對此發出警告。 例如MSVC給
warning C4047: '=' : 'char *' differs in levels of indirection from 'int'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.