- 论坛徽章:
- 2
|
同楼上或者sscanf
davelv 发表于 2011-03-04 10:54 ![]()
给个例子? 谢谢
前几天porting一个东西, 写了一个函数分析类似 b.0.2 或者 2.0.0这样的输入:- static int parse_bdf(const char *bdf, int *b, int *d, int *f)
- {/*{{{*/
- int ret = 0;
- char buf[1024], *dot1, *dot2, tmp[20], tmp2[22];
- strncpy(buf, bdf, sizeof(buf));
- /* Bus */
- dot1 = strchr(buf, '.');
- if (dot1 == NULL) {
- ret = -1;
- goto out;
- }
- *dot1 = '\0';
- strncpy(tmp, buf, sizeof(tmp));
- snprintf(tmp2, sizeof(tmp2), "0x%s", tmp);
- *b = strtol(tmp2, NULL, 16);
- /* Device */
- dot2 = strrchr(dot1 + 1, '.');
- if (dot2 == NULL) {
- ret = -1;
- goto out;
- }
- *dot2 = '\0';
- strncpy(tmp, dot1 + 1, sizeof(tmp));
- snprintf(tmp2, sizeof(tmp2), "0x%s", tmp);
- *d = strtol(tmp2, NULL, 16);
- /* Fucntion */
- strncpy(tmp, dot2 + 1, sizeof(tmp));
- snprintf(tmp2, sizeof(tmp2), "0x%s", tmp);
- *f = strtol(tmp2, NULL, 16);
- out:
- return ret;
- }/*}}}*/
复制代码 有人告诉我sscanf能实现,但是看了man没琢磨出来。 |
|