帮帮忙,找个C程序的语法错误

来源:百度知道 编辑:UC知道 时间:2024/07/16 01:51:04
#include <stdio.h>

#define BASE 10

unsigned long XP_fromint(int n, unsigned char *z, unsigned long u)
{
int i = 0;
do z[i++] = u%BASE;
while((u/=BASE)>0&&i<n);
for(;i<n;i++)
z[i] = 0;
return u;
}

void main()
{
unsigned char a[10];
unsigned char *b=a;
XP_fromint(10,b,123456);
int i;
for(i=0;i<10;i++)
{
printf("b%d=%d ",i,b[i]);
}
printf("\n");
}

这个程序在VC++6.0中编译的时候会报错,所报错误如下:

C:\C\TEST\xp.c(28) : error C2143: syntax error : missing ';' before 'type'
C:\C\TEST\xp.c(29) : error C2065: 'i' : undeclared identifier

但我没有看出哪里有错误,请高手指教
请问,是不是所有的C编译器都有这个规定呢,谢谢

呵呵,这个问题我来回答

楼主遇到的问题其实是 C语言的一个弊端:

函数里面,变量必须先声明,在使用

也就是说,要在刚进入函数里面时候,对每个变量声明一下

而不要直接定义

void main()
{
int i;
unsigned char a[10];
unsigned char *b;

b = a;
XP_fromint(10,b,123456);

for(i=0;i<10;i++)
{
printf("b%d=%d ",i,b[i]);
}
printf("\n");
}