在字符串中查找字符

时间:2013-11-03 13:47:52

标签: c string

给定一个字符串和一个字符,我必须找到字符串中存在字符的次数。

这是我到目前为止所做的:

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

main ()
{
  char string[10];
  char c1, c2;
  int contador, i, l, n;

  printf ("Introduza uma string e dois caracteres.\n");
  scanf ("%s %c %c", &string[i], &c1, &c2);

  l = strlen (string);
  contador = 0;

  for (n = 0; n < l; n++)
    {
      if (c1 == string[i])
    {
      contador = contador + 1;
    }
    }
  printf ("%d\n", contador);
}

printf中的文本是葡萄牙语,它的意​​思是“引入一个字符串和两个字符”。第二个角色是以后的。

非常感谢你能提供任何帮助。

4 个答案:

答案 0 :(得分:3)

你必须做出一些改变:
改变

 scanf ("%s %c %c", &string[i], &c1, &c2);  

 scanf ("%s %c %c", string, &c1, &c2);  

 if (c1 == string[i])  

 if (c1 == string[n])  

此外,您可以通过将if (c1 == string[i])更改为for (n = 0; n < l; n++)来保持for (i = 0; i < l; i++)不变 这是修改后的代码段

printf ("Introduza uma string e dois caracteres.\n");
scanf ("%s %c %c", string, &c1, &c2);  


l = strlen (string);
contador = 0;

for (n = 0; n < l; n++)
{
      if (c1 == string[n])
      {
          contador = contador + 1;
      }
}

答案 1 :(得分:1)

这是一个功能的简单实现,可以满足你的需要。

int strnchr(char *string, char ch) {
    int i, len = strlen(string), found = 0;
    for(i = 0; i < len; i++)
        if(string[i] == ch)
            found++;
    return found;
}

答案 2 :(得分:0)

以下是修改过的代码,“为什么”是haccksanswer

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

int main ()
{
  char string[10];
  char c1;
  int contador, l, n;

  printf ("Introduza uma string e dois caracteres.\n");
  scanf ("%s %c", string, &c1);

  l = strlen (string);
  contador = 0;

  for (n = 0; n < l; n++)
    {
      if (c1 == string[n])
          contador++;
    }

  printf ("%d\n", contador);

  return 0;
}

答案 3 :(得分:0)

如果您需要快速实现此功能,可以使用标准c库中的strchr - 函数,该函数应在大多数常见系统上进行优化。

int strnchr(char *str, char ch) {
   int i;

   for (i = 0; (str = strchr(str, ch)) != NULL; i++) {
      if (++str == '\0') {
         break;
      }
   }

   return i;
}