在函数中反转字符串并在 main 中打印它

Reversing a string in a fuction and print it in main

我必须编写一个程序,它读取一个字符串和一个字符,并打印字符在字符串中存在的次数!然后它必须调用一个函数来反转字符串并将其 return 到 main!这是代码 IV 完成!始终存在此错误:[Error] 从 'char' 到 'char*' [-fpermissive]

的无效转换
#include <stdio.h>
#include <string.h>
char rev(char a[80]);

main()
{
   char a[80],b,*c;
   int l,sum,i,v,pos; 
   puts("give a string and a character");
   gets(a);
   gets(&b);
   sum=0;
   i=0;
   while(a[i]!='[=10=]')
   { 
                    if(a[i]==b) sum=sum+1;
   i=i+1;
   pos=pos+1;
   }
   printf("the char %c exists %d times in the string",b,sum);
   c=rev(a);
   printf("the original string is: \n");
   puts(a);
   printf("the reversed string is:\n");
   puts(c);
}

char rev(char a[80])
{
    char w[80],*ptr;
    int k,i,sum;
    i=0;
    k=0;
    for(i=80;i=0;i--)
    {
    w[k]=a[i];
    k=k+1;
    }
    i=0;
    for(i=0;i=80;i++)
    {
        *ptr=w[i];
        ptr++;
    }
    return *ptr;
}

gets(&b); 抛出错误,因为函数语法是 char *gets(char *st) 您的代码提供 char 数据类型,它需要 指向 char 数据类型的指针

相反,您可以进行如下更改:

char *b;
gets(b);
char c=b[0];//character ur trying to find in string
#include <stdio.h>
#include <stdlib.h> 
#include<string.h>       
char* rev(char[] );
main()
{
    char a[80],b,*c;
    int l,sum,i,v,pos=0;
    puts("give a string and a character");
    scanf("%s",a);
    scanf(" %c",&b);
    sum=0;
    i=0;
    while(a[i]!='[=10=]')
    {
            if(a[i]==b)
                     sum=sum+1;
            i=i+1;
            pos=pos+1;
    }
    printf("the char %c exists %d times in the string\n",b,sum);
    c=rev(a);
    printf("the original string is: \n");
    puts(a);
    printf("the reversed string is:\n");
    puts(c);
}
char *rev(char a[80])
{
    char w[80],*ptr;
    int i,sum;
    sum=strlen(a);
    ptr=malloc(sum);
    for(i=sum-1;i>=0;i--)
    {
            *ptr++=a[i];
    }
    return ptr-sum;
}

试试这个。