菜鸟请教一个C问题
#include <stdio.h>
char squeeze(char s1,char s2)
{
int i=0,j=0,k=0,a=0,b=1,s;
char s3;
while(s1[i++]!= '\0 ')
{ s=1;
for(;s2[j]!= '\0 ';j++)
if(s1[i]==s2[j]) s*=a;
if(s)
s3[k++]=s1[i];
}
s3[k]= '\0 ';
return s3;
}
这个函数有什么问题啊,编译时出现错误
[解决办法]
如果是C的话,得把变量声明和定义放在函数的前面,并且声明放在定义的前面。
即:
char s3;
int s;
int i=0,j=0,k=0,a=0,b=1;
[解决办法]
还有,s1和s2是char还是char *?
[解决办法]
char squeeze(char *s1,char *s2)
[解决办法]
先改为char squeeze(char* s1,char* s2)
因为你在下面用到了s1[]、s2[],这是数组,不是字符变量。
[解决办法]
char 只是一个字符
应该用char*
否则s1[i++],肯定错误
[解决办法]
应该是char* squeeze(char *s1,char *s2)
但是你返回一个局部变量的指针是错误的
static char s3[1024];
[解决办法]
//s1,s2,s3是一个字符,不是地址,你如同数组样的使用,怎么可以