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 のテキストはポルトガル語で、「文字列と 2 つの文字を導入する」という意味です。2 番目の文字は後で使用します。

あなたが与えることができる助けをいただければ幸いです。

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

これが変更されたコードで、「なぜ」はハック答えです。

#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 に答える