【发布时间】:2013-11-10 22:01:56
【问题描述】:
我有一个 SPARQL 查询,例如“select ?Y ?Z where ...”。我要做的就是提取变量“?Y”和“?Z”。我写了以下循环:
char *p = "select ?Y ?Z where condition";
char *array[2];
p += strlen("select"); /* advancing the pointer */
for(int i = 0; i < 2; i++)
{
sscanf(p, "%m[?a-zA-Z] %[^\n]", array[i], p); /* 'm' tells sscanf to perform dynamic memory allocation */
printf("%s, ", array[i]);
printf("%s, ", p);
}
但是,我没有得到预期的行为。 array[1] 包含垃圾,array[2] 包含 null。
【问题讨论】:
-
可能与打开的/*有关
-
打开是什么意思?
-
请在将指针前进到位置后检查