在c中搜索数字的出现次数

时间:2012-09-19 11:45:25

标签: c search numbers integer strstr

我知道如何在C中搜索字符串。我使用for循环然后使用strstr函数来确定是否有任何出现。但现在我有int数字而不是我想搜索的数字。我确实在互联网上找到了几个例子,但所有那些搜索确切的数字,我不想要。 我需要搜索“20”,如果有一个数字“2010”,它应该显示它。

我怎样才能在c?中做到这一点?

2 个答案:

答案 0 :(得分:2)

也许我错过了重点...但为什么不继续使用strstr?

int main(){
   char tmpbookyear [] = "this year is 2010";
   char searchCriteria [] = "20";
   char *result;

   if((result = strstr (tmpbookyear, searchCriteria)) != NULL)
       printf ("Returned String: %s\n", result);
   else
       printf("GOT A NULL\n");
}

mike@linux-4puc:~> gcc test.c
mike@linux-4puc:~> ./a.out 
Returned String: 2010

I need to search like "20" and if there is a number "2010" it should display it. 这就是你想要它做的正确吗?

修改

char year[] = "2012"; 
char search[] = "2";
if(strstr(year, search) != NULL) 
    { printf("result is %s\n",strstr(year, search)); }

mike@linux-4puc:~> gcc test.c
mike@linux-4puc:~> ./a.out 
result is 2012

答案 1 :(得分:1)

逐个字符地扫描字符串,直到找到一个数字(isdigit()返回非零)。然后使用strtoul()将该位置的字符串转换为无符号长整数。进行比较,然后使用从strtoul()返回的转换结束指针来知道继续扫描的位置。