算法! 大家帮忙啊

求一个算法! 大家帮忙啊!
我想求一个算法,这个算法要求像手机里的“提取号码”这个功能。就是从一个文本内容里面把其中夹杂的一些数字给提取出来,要求这些数字必须是连续三个以上互相紧挨着一块的。   我可以举个例子来具体说明一下要求。
短信内容:“****我遇到一个难题1223789,所以在这里123发表了一个帖子22,希望大家帮忙。”
提取号码:“1223789”,“123”。
“22”是两个连续紧挨着一块的,但是只有三个。所以不必提取出来。
不知这样大家看明白了没有?
希望大家帮小弟一把。   谢谢了!

------解决方案--------------------
每次从字符串中读出三字符,开始判断,如果三个全是数字.

那么开始从三个字符中的第一个位置开始读,一直读到数字结束.

如char *str= "****我遇到一个难题1223789,所以在这里123发表了一个帖子22,希望大家帮忙。 "


int len=(int)strlen(str);
for(int i=0;i <len-3;i++)
{
if(str[i]> = '0 '&&str[i] <= '9 ')
if(str[i+1]> = '0 '&&str[i+1] <= '9 ')
if(str[i+2]> = '0 '&&str[i+2] <= '9 ')
{
while(str[i]> = '0 '&&str[i] <= '9 ')
{
printf( "%c ",str[i]);//打印出数字
i++;
}
}

}

注:上面程序片段,没有测试,只是提供方法.