该程序缺少什么/需要解决什么?

时间:2019-04-19 04:12:55

标签: c string pointers repeat

我正在设置一个程序,如果我键入一个字符串,则需要使用具有这2个形式参数(指针和字符)的函数。每次我运行程序时,代码都不会通过带有实际参数的声明函数运行。

这是如何工作的...

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

相反,我得到...

[实际]:

输入您的字符串:您好。

您要检查字符串中的哪个字符重复吗? l

2 个答案:

答案 0 :(得分:-2)

以下是我在您的程序中发现的问题。

  1. 您没有保存甚至打印charcnt function返回的结果。
  2. 您无需分配任何内容。您的if condition可以是if(ptr[i] == c)
  3. 您甚至都没有在代码的任何地方打印结果。

答案 1 :(得分:-2)

检查一下!

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++;
}