Как считать количество специфических символов в string C?

У меня есть активность, в которой я должен создавать функцию для того, чтобы считало количество "a" и "A", что есть внутри string. То, что я сделал, состояло в том, чтобы был прочитан string с gets в функции main, и после перемещать ее как параметр в функцию упражнения. Однажды в функции, я пробегаю array символов (string) с for. Чтобы считать буквы в comparo характер из-за характера с другими переменными используя if и в случае условия будьте истинной увеличивается переменная из-за 1. Если он подходит близко в недействительный характер, используется break, чтобы выходить из for. Проблема состоит в том, что программа не берет никакой буквы как A или в и выходит for давая вывода Есть 0 Схвати в молитве. Код:

#include<stdio.h>
int aa(char arr[], int num){
 int i;
 int b=0;
 int a='a';
 int a1='A';
 for(i=0;i<num;i++){/*El problema esta en este for*/
 if(arr[i]==((a)||(a1))){
 b++;}/*El programa no cuenta ningun caracter como a o A*/
 else if(arr[i]=='\0'){
 break;}}/*Y directamente sale de la funcion*/
 printf("Hay %d As en la oracion.\n",b);}


main(){
 int i;
 char string1[64];
 printf("Poner una oracion:\n");
 gets(string1);
 aa(string1,64);
 return 759;}

edit: Я заношу в список уже эту решенный, спасибо :D

1
задан 18.03.2019, 22:45
3 ответа

Твоя проблема estГЎ aquГ-:

if( arr[i] == ( ( a ) || ( a1 ) ) ) {

Это равняется

сравнивает стоимость arr[i] с результатом, or реализовывать lГіgico из a и a1

то, что tГє ты хочешь сделать:

if( ( arr[i] == a ) || ( arr[i] == a1 ) ) {
3
ответ дан 02.12.2019, 05:28

Улучшаясь ты cГіdigo, quedarГ - в asГ, - despuГ©s упорядочивания каких-то проблем lГіgica и расположи в порядке.

, Чтобы сравнивать с символами, ты можешь делать это asГ-:

if(arr[i] == 'a' || arr[i] == 'A') //no hace falta guardar los caracteres 'a' y 'A' en variables.

Ты cГіdigo завершил quedarГ - в asГ-:

#include <stdio.h>
int aa(char arr[], int num){
   int i;
   int b=0;

   for(i=0;i<num;i++){
     if(arr[i]=='a'|| arr[i]=='A'){
        b++;
     }
     else if(arr[i]=='\0')
        break;
 }
 printf("Hay %d As en la oracion.\n",b);}


main(){
   int i;
   char string1[64];
   printf("Poner una oracion:\n");
   gets(string1);
   aa(string1,64);
   return 759;
}
2
ответ дан 02.12.2019, 05:28
  • 1
    Tambié n ты recomendarí чтобы использовать имена переменных и функций má s читабельные, например для funció n aa, его называет ее например contadorDeCaracteres(), это не является обязательным, но хорошая одна prá ctica. –  Mario Guiber 18.03.2019, 22:19

Предыдущий cГіdigo не функционирует. Тот факт, что я прикрепляю в continuaciГіn sГ - что функционирует. Я это протестировал. Когда это прикрепляет один cГіdigo mГ-nimo, он состоит в том, чтобы тестировать это, чтобы не сбивать со следа в тех, которые это находят в Ваш bГєsquedas.

/*
 ============================================================================
 Name        : numerodea.c
 Author      : Sergio Sanz
 Version     :
 Copyright   : All Rights Reserved
 ============================================================================
 */

#include <stdio.h>

int aa(char arr[], int num)
{
   int i;
   int b = 0;

   for(i = 0; i < num; i++)
   {
     if(arr[i] == 'a' || arr[i] == 'A')
     {
        b++;
     }
     else if(arr[i] == '\0')
     return b;
   }
}

int main()
{
   char string1[64];

   printf("Poner una oración:\n");
   fflush(stdout);
   gets(string1);

   int num = aa(string1, 64);

   printf("Hay %d As en la oración.\n", num);

   return 0;
}
0
ответ дан 02.12.2019, 05:28
  • 1
    в có я говорю того, кто ты относишься? –   26.03.2019, 01:43
  • 2
    В предыдущий ответ, в котором он помещает, что có я говорю quedarí в así..., и прикрепи có я говорю, что оно не функционирует. Тот, которого поместил я, возможная одна solució n в cuestió n инициал, который sí что функционирует действительно, потому что está протестированный. Это - то, что querí чтобы говорить. –  Vacendak 27.03.2019, 16:00