C语言小白,不懂为什么参数会不匹配,希望大佬能指点一下
#include<stdio.h>#include<string.h>
int fun(unsigned char * a ,unsigned char * b)//密码正确时返回1,不正确时返回2
{
int i;
for( i=0;i<4;i++)
{
if(a!=b)
return 0;
}
return 1;
}
int main()
{
unsigned char a[]="m123";//设定密码为m123
unsigned char res;
scanf("%s",&res);
if(fun(&a,&res)==0)//此行报错,大概意思是参数类型不匹配
puts("wrong");
if(fun(&a,&res)==1)//此行原因同上
puts("right");
return 0;
} scanf("%s",&res),这里要把res定义成数组或指针,你的res是char类型,只能接受一个字符,你定义成数组就可以了 吧res定义成字符就不报错了
代码我改了下
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int fun( char *a , char *b)//密码正确时返回1,不正确时返回2
{
int i=0;
// printf("%s %s\n",a,b);
for( i=0;i<4;i++)
{
if(a!=b)
return 0;
}
return 1;
}
int main()
{
char *a = "m123";//设定密码为m123
char res;
printf("请输入四位数密码:\n");
scanf("%s",&res);
// printf("%d",sizeof(res));
if (strlen(res)!=4)
{
puts("wrong");
return 0;
}
/* while(1)
{
printf("字符数错误,请重新输入:\n");
scanf("%s",&res);
if (strlen(res)==4)
break;
}
*/
// res = (char *) malloc(10*sizeof(char));
/*printf("\n");
puts(res);*/
if(fun(a,res)==0)//此行报错,大概意思是参数类型不匹配
puts("wrong");
if(fun(a,res)==1)//此行原因同上
puts("right");
//free(res);
return 0;
} #include<stdio.h>
#include<string.h>
int fun(unsigned char * a, unsigned char * b)//密码正确时返回1,不正确时返回2
{
int i;
for (i = 0; i<4; i++)
{
if (a != b)
return 0;
}
return 1;
}
int main()
{
unsigned char a[] = "m123";//设定密码为m123
unsigned char res[] = {0};
scanf("%s", res);
if (fun(a, res) == 0)//此行报错,大概意思是参数类型不匹配
puts("wrong");
if (fun(a, res) == 1)//此行原因同上
puts("right");
return 0;
} 记住 数组名是数组元素的首地址就行了吧。
页:
[1]