プロが教える店舗&オフィスのセキュリティ対策術

CでCGIを書く上で、perlのsplit命令の代替になるようなライブラリを探しています。
www=xxx&yyy=zzz という引数をchar型の配列に入れ、それを & で分割し、次に = で分割して

query[0].name = www; query[0].value = xxx
query[1].name = yyy; query[1].value = zzz

などと、perlと同等のことをさせたいのですが、文字列をその都度走査していたのでは処理が莫大になりそうなので、もしご存知であれば教えていただければと思います。

A 回答 (1件)

strtokがありますが、結局自分で少しは書かなくてはいけないと思います。


ちょっとCで書いてみました。関数化すればよいと思います。

struct QUERY {
char *name;
char *value;
};

void XXX()
{
char *kari = "www=xxx&yyy=zzz";
char qbuf[128];
strcpy(qbuf, kari);

struct QUERY *query;
char *p;
int count = 1;

for (p = qbuf; *p != '\0'; p ++) {
if (*p == '&')
count ++;
}

query = (struct QUERY *)malloc(sizeof(struct QUERY) * count);

count = 0;
query[0].name = qbuf;
for (p = qbuf; *p != '\0'; p ++) {
if (*p == '=') {
*p = '\0';
query[count].value = p + 1;
} else if (*p == '&') {
*p = '\0';
count ++;
query[count].name = p + 1;
}
}

free(query);
}
    • good
    • 0
この回答へのお礼

ポインタを受け付けない硬い頭によく効きました。
無事に動作して、関数化、組み込みができました。ありがとうございます。

お礼日時:2001/07/25 12:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!