在C中查找字符串中每个字符的出现次数

时间:2011-10-19 07:20:54

标签: c

我在C中有一个问题,我必须找到一个字符串中每个字符的出现次数。假设我有像“amitamt”这样的字符串,输出应该像“a2m2it2”。我有一个例程,我可以找到它没有出现特定的角色。

int count_chars(const char* string, char ch)
{
int count = 0;
int i;

int length = strlen(string);

for (i = 0; i < length; i++)
{
    if (string[i] == ch)
    {
        count++;
    }
}


return count;
}

但我不知道如何计算字符串的每个字符

2 个答案:

答案 0 :(得分:4)

如果您有一个ASCII字符串,请创建一个大小为256的int数组。然后遍历该字符串并增加位置x上的int数组中的值。虽然x是字符串中字符的ASCII值,但是你正在循环。

答案 1 :(得分:1)

如果我有任何错误,如语法请原谅我正在研究vb,我无法弄清楚在哪里放括号或括号,

我相信strchr让你的工作更轻松

 #include <stdio.h>
 #include <string.h>

 int str_occ (char *pch ,char a)
 {
   int  i = 0;
   char *p;
   p=strchr(pch,a);
   while (p!=NULL)
   {
     i = i+1;
     p = strchr(p+1,a);
   }
   return i;
 }

要解释代码* pch是您必须传递的字符串,char a是您要搜索的字母,以查找其发生的次数和int i返回的出现次数值

说样品

 int main()  
{
  char a[]="hello world";
  int i;
  i=str_occ(a,'l');
  printf("%d",i);
}
 output is 3

您可以根据自己的要求制作代码,将函数保持在循环中,我的意思是旋转元素