2

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

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

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

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

谢谢

4

3 回答 3

1

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

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);
    }            
}

ideone 上的演示

于 2013-08-26T01:21:25.033 回答
0

您想使用strtok或更好的解决方案,将此字符串标记为标记&=标记。

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

这是您将从 strtok 获得的输出

Output:

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

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

于 2013-08-26T01:16:57.870 回答
0

我很可能会编写一个小型词法扫描器来完成这项任务。意思是,我会根据代表一组可能输入的正则表达式一次分析一个字符的字符串。

于 2013-08-26T01:28:56.210 回答