在这个程序中缺少什么/需要修复?

问题描述 投票:-3回答: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++;
}

我希望这样跑......

[预期]:

输入你的字符串:你好。

字符串中的哪个字符是您检查重复?升

2

相反,我得到......

[实际]:

输入你的字符串:你好。

字符串中的哪个字符是您检查重复?升

c string pointers repeat
2个回答
-2
投票

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

  1. 您没有保存甚至打印charcnt function的结果返回。
  2. 你没有事件需要分配任何东西。你的if condition可以是if(ptr[i] == c)
  3. 您甚至无法在代码中的任何位置打印结果。

-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++;
}
© www.soinside.com 2019 - 2024. All rights reserved.