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

このQ&Aに関連する人気のQ&A

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に関連する最新のQ&A

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

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ