我希望从字符串中提取整数,例如我想从字符串“/dev/nkdev/group0/mdev1”中提取0作为组标识符,提取1作为mdev标识符。
在上述字符串中,“/dev/nkdev/group”是输入的固定模式,组ID可以是0-9之间的任何整数,“mdev”也不是固定的,它可以是任何字符序列,后跟一个整数。
我使用了以下代码:
在上述字符串中,“/dev/nkdev/group”是输入的固定模式,组ID可以是0-9之间的任何整数,“mdev”也不是固定的,它可以是任何字符序列,后跟一个整数。
我使用了以下代码:
#define NO_INTEGER "%0[^0-9]"
res = sscanf(dev_name_p, NO_INTEGER "%u" NO_INTEGER "%u",
&group_id, &mdev_id);
但是我发现内核不支持跳过序列。有没有人能告诉我,是否有任何内核库函数可以完成这项工作?
/dev/nkdev/group%u/mdev%u
不是有可能吗? - bzeaman/dev/nkdev/group%u/%*s%u
呢? - bzeaman%*s
也包括了紧随着mdev
部分的数字。在他的问题中,他声明不支持“跳过序列”,我认为他指的是像%*[a-z]
这样的格式。无论如何,我还是发布了这个答案,它可能会帮助其他人。 - bzeamansimple_strtoul()
和自己的循环来解析其中的所有数字。 - 0andriy