C 此程序中缺少/需要修复哪些内容?

C 此程序中缺少/需要修复哪些内容?,c,string,pointers,repeat,C,String,Pointers,Repeat,我正在设置一个程序,如果我输入一个字符串,我需要使用一个带有这两个形式参数(指针和字符)的函数。每次我运行程序时,代码都不会使用实际参数运行我声明的函数 这是如何工作的 1) 输入我的字符串 2) 输入我想看到的字符是重复的 3) 该函数将运行for循环,以查看我的字符串(在数组中)中的哪些字符包含重复字符;每次它这样做时,它都会增加并合计重复的次数。下面是我的功能代码 int main(void) { char string[100], rep_char = 'c', *ptr

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

这是如何工作的

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++;
}
int main(无效)
{
字符字符串[100],rep_char='c',*ptr=string[0];
int charcnt(char*ptr,char c);
printf(“输入字符串:”);
获取(字符串);
printf(“%i”,strlen(字符串));
printf(“\n要检查字符串中的哪个字符是否重复?”);
扫描字符(“%c”和“rep_char”);
字符(*ptr,rep_char);
getch();
返回0;
}
int charcnt(char*ptr,char c)
{
int rep=0;
字符串[100];
for(int i=0;i
我希望能像这样跑

[预期]:

输入字符串:您好

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

二,

相反,我得到

[实际]:

输入字符串:您好


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

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

  • 您没有通过
    charcnt函数保存甚至打印返回的结果
  • 您不需要分配任何内容。您的
    if条件可以是
    if(ptr[i]==c)
  • 您甚至没有在代码中的任何位置打印结果
  • 看看这个

    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++;
    }
    
    intmain(){
    字符字符串[100],rep_char='c';
    int charcnt(char*ptr,char c);
    printf(“输入字符串:”);
    获取(字符串);
    printf(“%i”,strlen(字符串));
    printf(“\n要检查字符串中的哪个字符是否重复?”);
    scanf(“%c”和rep_char);
    printf(“\n%d”,字符(字符串,rep_char));
    getch();
    返回0;
    }
    int charcnt(char*ptr,char c){
    int rep=0;
    对于(int i=0;i
    这段代码甚至不应该编译。您将一个char分配给一个char指针,当函数需要char指针时,您将给它一个char函数。您使用的是哪种编译器?它真的不抱怨这些事情吗?也要始终标记您使用的语言。我在Microsoft Visual Studio 2017上使用的是C。我的教授说代码应该可以运行,但这不是出于某种原因。顺便说一句,我是StackOverflow的新手。编译器真的没有给出任何警告吗?将它们设置为最大值,并修复它警告的所有内容。请参见:。通过检查返回值来验证每个输入,避免
    getch()
    conio.h
    ,这会使您的代码100%不可移植到除DOS/windows以外的任何其他系统。相反,只需使用
    stdio.h
    getchar()
    在代码末尾保留终端窗口(相同的结果)。void swap应该做什么?它的代码甚至没有显示出来!我已经编辑过了。现在代码运行得很好。