【发布时间】:2018-11-23 18:09:52
【问题描述】:
我有一个函数原型,它为我提供了我想要的结果:
#include <stdio.h>
#include <string.h>
int main ()
{
char * pch;
char str[] = " 81.243.230.174, 10.1.0.102";
pch = (char*) memchr (str, ',', strlen(str));
char * tch;
memcpy (tch, str, pch-str);
if (pch!=NULL){
printf ("',' found at position %ld.\n", pch-str);
printf ("XFF: %s\n", tch);
} else {
printf ("',' not found.\n");
}
return 0;
}
返回以下内容: $>',' 位于第 15 位。 $>XFF: 81.243.230.174
我想把libvcl的VRT_GetHdr的输出处理成上面的str,如下:
char * pch;
char str[] = VRT_GetHdr(sp, HDR_REQ, "\023X-FF:");
pch = (char*) memchr (str, ',', strlen(str));
char * xff;
memcpy (xff, str, pch-str);
if (get_country_code)
VRT_SetHdr(sp, HDR_REQ, "\017X-Country-Code:", (*get_country_code)(xff), vrt_magic_string_end);
VRT_GetHdr 返回一个 char 指针,编译器抱怨“初始化程序无效”。
如果我改变分配 字符字符串 [] 至 字符 *str ,清漆在运行时死掉(可能有段错误)。 如何在不使用上述指向数组混乱的指针的情况下从我的内联 C 中获得预期结果?
【问题讨论】:
-
算了。我将使用:github.com/rvagg/mod_geoip2_xff