从查询字符串中提取整数

时间:2013-08-26 01:15:19

标签: html c forms query-string

我正在创建一个可以通过C和html进行mysql事务的程序。

我有这个查询字符串 query = -id=103&-id=101&-id=102&-act=Delete

通过sscanf提取“删除”并不难,但我需要帮助提取整数并将它们放在int id[]数组中。 -id条目的数量可能会有所不同,具体取决于在html表单中检查了多少个复选框。

我一直在寻找几个小时,但没有找到任何适用的解决方案;或者我只是不理解他们。有什么想法吗?

由于

3 个答案:

答案 0 :(得分:1)

您可以使用strstratoi在循环中提取数字,如下所示:

char *query = "-id=103&-id=101&-id=102&-act=Delete";
char *ptr = strstr(query, "-id=");
if (ptr) {
    ptr += 4;
    int n = atoi(ptr);
    printf("%d\n", n);
    for (;;) {
        ptr = strstr(ptr, "&-id=");
        if (!ptr) break;
        ptr += 5;
        int n = atoi(ptr);
        printf("%d\n", n);
    }            
}

Demo on ideone

答案 1 :(得分:0)

您希望使用strtok或更好的解决方案来将此字符串标记为&=作为令牌。

请查看cplusplus.com以获取更多信息和示例。

这是你从strtok获得的输出

Output:

Splitting string "- This, a sample string." into tokens:
This
a
sample
string

一旦你弄清楚如何拆分它们,下一个障碍是将数字从字符串转换为int s。为此,您需要查看atoi或其更安全更强大的表兄strtol

答案 2 :(得分:0)

我很可能会写一个小型词法扫描程序来解决这个问题。意思是,我会根据表示可能输入集的正则表达式一次分析一个字符串。