Чего не хватает / нужно исправить в этой программе? - PullRequest
0 голосов
/ 19 апреля 2019

Я настраиваю программу, в которой, если я набираю строку, мне нужно использовать функцию с этими двумя формальными параметрами (указатель и символ).Каждый раз, когда я запускаю программу, код не будет проходить через мою объявленную функцию с фактическими параметрами.

Как это работает ...

1) Введите мою строку

2) Введите символ, который я хочу видеть, повторяется

3)функция запустит цикл for, чтобы увидеть, какие символы в моей строке (которые находятся в массиве) содержат повторяющийся символ;каждый раз, когда это происходит, оно будет увеличиваться и составлять общее количество повторений.Ниже приведен код моей функции ...

int main(void)
{
        char string[100], rep_char = 'c', *ptr = string[0];
        int charcnt(char *ptr, char c);

        printf("Input your string: ");  

        gets(string);

        printf("%i", strlen(string));

        printf("\nWhich character in the string are you checking for repetition? ");

        scanf_s("%c", &rep_char);

        charcnt(*ptr, rep_char);

        getch();

       return 0;
}

int charcnt(char *ptr, char c)
{
        int rep = 0;    
        char string[100];

    for (int i = 0; i < strlen(string); i++)
    {
        *ptr = string[i];
        if (string[i] == c)
        {
            rep++;
        }
    }
    return rep++;
}

Я ожидаю, что будет работать так ...

[Ожидается]:

Введите вашу строку: привет там.

Какой символ в строке вы проверяете на повторение?l

2

Вместо этого я получаю ...

[Actual]:

Введите вашу строку: привет там.

Какиесимвол в строке вы проверяете на повторение?л

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Проверьте это!

int main() {
char string[100], rep_char = 'c';
int charcnt(char * ptr, char c);

printf("Input your string: ");

gets(string);

printf("%i", strlen(string));

printf("\nWhich character in the string are you checking for repetition? ");

scanf("%c", & rep_char);

printf("\n%d", charcnt(string, rep_char));

getch();

return 0;
}

int charcnt(char * ptr, char c) {
int rep = 0;

for (int i = 0; i < strlen(ptr); i++) {

    if (ptr[i] == c) {
        rep++;
    }
}
return rep++;
}
0 голосов
/ 19 апреля 2019

Это следующие проблемы, которые я обнаружил в вашей программе.

  1. Вы не сохраняете и даже не распечатываете результат, возвращенный вашим charcnt function.
  2. Вам не нужно ничего назначать. Ваш if condition может быть if(ptr[i] == c)
  3. Вы даже не печатаете результат нигде в вашем коде.
...