「select ?Y ?Z where ...」のような SPARQL クエリがあります。私がやりたいことは、変数「?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 が含まれています。