我正在创建一个可以通过C和html进行mysql事务的程序。
我有这个查询字符串
query = -id=103&-id=101&-id=102&-act=Delete
通过sscanf提取“删除”并不难,但我需要帮助提取整数并将它们放在int id[]
数组中。 -id
条目的数量可能会有所不同,具体取决于在html表单中检查了多少个复选框。
我一直在寻找几个小时,但没有找到任何适用的解决方案;或者我只是不理解他们。有什么想法吗?
由于
答案 0 :(得分:1)
您可以使用strstr
和atoi
在循环中提取数字,如下所示:
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);
}
}
答案 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)
我很可能会写一个小型词法扫描程序来解决这个问题。意思是,我会根据表示可能输入集的正则表达式一次分析一个字符串。