有一个带有一行文字的字符串。让我们说:
char * line = "Foo|bar|Baz|23|25|27";
我必须找到这些数字。
我在考虑这样的事情:
问题是......如何在字符串中找到这样的数字?
(我对C99 / gcc不太熟悉。)
使用的编译器:gcc 4.3(环境是Debian Linux 稳定。)
答案 0 :(得分:7)
我会接近以下内容:
一些可能有用的库函数是strtok
,isdigit
,atoi
。
答案 1 :(得分:2)
this answer中建议的方法的一种可能实现,基于sscanf。
#include <stdio.h>
#include <string.h>
void find_integers(const char* p) {
size_t s = strlen(p)+1;
char buf[s];
const char * p_end = p+s;
int n;
/* tokenize string */
for (; p < p_end && sscanf(p, "%[^|]%n", &buf, &n); p += (n+1))
{
int x;
/* try to parse an integer */
if (sscanf(buf, "%d", &x)) {
printf("got int :) %d\n", x);
}
else {
printf("got str :( %s\n", buf);
}
}
}
int main() {
const char * line = "Foo|bar|Baz|23|25|27";
find_integers(line);
}
输出:
$ gcc test.c && ./a.out
got str :( Foo
got str :( bar
got str :( Baz
got int :) 23
got int :) 25
got int :) 27