我必须创建一个程序,它读取字符串和字符并打印字符串中字符存在的次数!然后它必须调用一个函数来反转字符串并将其返回到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;
}
答案 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