反转函数中的字符串并将其打印在main中

时间:2015-01-09 12:50:46

标签: c string reverse

我必须创建一个程序,它读取字符串和字符并打印字符串中字符存在的次数!然后它必须调用一个函数来反转字符串并将其返回到main!这是代码IV!始终存在此错误:[错误]无效从“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]!='\0')
   { 
                    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;
}

2 个答案:

答案 0 :(得分:1)

#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]!='\0')
    {
            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;
}

试试这个。

答案 1 :(得分:0)

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

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

char *b;
gets(b);
char c=b[0];//character ur trying to find in string