在函数中反转字符串并在 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;
}
试试这个。
我必须编写一个程序,它读取一个字符串和一个字符,并打印字符在字符串中存在的次数!然后它必须调用一个函数来反转字符串并将其 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;
}
试试这个。