你要把那个fun函数放到main函数前边。
出现警告提示是因为编译到main函数时发现fun函数还没有定义。于是提示说假设fun函数是返回int值的函数。
出现的错误提示是因为,前边已经假设fun函数是返回int的函数了(就是编译器假定fun函数为int fun()了),结果在后边再一次碰到了fun函数的定义,于是它就报告说fun函数重复定义了。
清楚了吧?请采纳。
函数的先使用后定义问题。
C语言要求函数在使用前需要先定义,如果没有定义,编译器会帮助你生成一个默认的定义,因此会产生第一条告警。
warning C4013: 'fun' undefined; assuming extern returning int
int i,b[6];char a[100]="bacd1b+ddep";
fun(a,b);
C语言编译器在编译到下面这段代码的时候,发现了一个不认识的函数fun,就会根据你的参数生成一个默认的定义,默认定义的返回值是int类型,这就相当于
int i,b[6];char a[100]="bacd1b+ddep";
int fun(char a[], int b[]);
fun(a,b);
但是后续实现fun的时候,void fun(char a[],int b[]),返回值确实void类型,和上面的定义不匹配,因此就出现了第二个错误error C2371: 'fun' : redefinition; different basic types
修改的话,要么就在main函数之前显示声明fun的定义,或者fun的实现放在main函数之前。
函数要么定义在前面 要么声明一下 不然不知道你调用的是哪个
声明方式如下
#include
#include
void fun(char a[],int b[]);
void main ()
{
int i,b[6];char a[100]="bacd1b+ddep";
fun(a,b);
printf("The result is :");
for (i=0;i<6;i++)printf("%d ",b[i]);
printf("\n");
}
void fun(char a[],int b[])
{
int m,n,x[6]={0,0,0,0,0,0};
m=strlen(a);
for(n=0;n{
if (a[n]=='a')
x[0]++;
else if (a[n]=='b')
x[1]++;
else if (a[n]=='c')
x[2]++;
else if (a[n]=='d')
x[3]++;
else if (a[n]=='e')
x[4]++;
else
x[5]++;
}
for (n=0;n{
b[n]=x[n];
}
}
你的fun函数忘记声明了
在void main前面加上:
void fun(char a[],int b[]);
即:
void fun(char a[],int b[]);
void main()
...
在void main上面输入void fun(char a[],int b[]) 你试一下看看对不对