1

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

这是我到目前为止所拥有的:

#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

4 回答 4

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;
      }
}
于 2013-11-03T13:52:06.090 回答
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;
}
于 2013-11-03T13:53:37.927 回答
0

这是修改后的代码,“为什么”是hacks答案

#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;
}
于 2013-11-03T15:18:05.363 回答
0

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

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

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

   return i;
}
于 2013-11-03T15:24:16.477 回答