当前位置: 技术问答>linux和unix
请教为什么在C++编译通过并实现的程序,在linux下就会出错(解决马上给分啊!谢谢)
来源: 互联网 发布时间:2015-03-09
本文导语: 我在vc++6.0通过的程序,在Linux下用Gcc编译可以通过,但执行文件会在中途出现 ”寄存器错误“ 这种信息,文件也在中途停止执行。 我编的是从一个文件中读进一串数,然后写入另一个文件中,用了文件系统,为什...
我在vc++6.0通过的程序,在Linux下用Gcc编译可以通过,但执行文件会在中途出现
”寄存器错误“ 这种信息,文件也在中途停止执行。
我编的是从一个文件中读进一串数,然后写入另一个文件中,用了文件系统,为什么会这样呢?
程序:(这是里面的一个函数)
unsigned char ReceiveFrame ( FILE * fp )
{
unsigned char buffer[MAXLEN],*cp=NULL,a[MAXLEN];
struct Frame ptr;
int len = 0,i;
unsigned char temp[2];
memset(buffer, 0x00, MAXLEN);
while ( fgets((char *)buffer, MAXLEN, fp) != NULL)
{
buffer[strlen((char *)buffer)] = '';
printf("nnnThe frame you receive is : ");
printf("%s", buffer);
sscanf((char *)buffer, "%02x ", &ptr.flag);//这里开始就有错了,在Windows下可以真确的得出结果,LInux就不行了。
sscanf((char *)buffer + 3 , "%04x ", &ptr.D_address);
sscanf((char *)buffer + 8, "%04x ", &ptr.S_address);
sscanf((char *)buffer + 13, "%02x ", &ptr.type);
for(i=0,len=0;sscanf((char *)buffer + 16 + len * 3, "%s", temp) != EOF;len++,i=i+2)
{
sscanf((char *)buffer + 16 + len * 3, "%s", temp);
//printf("%s", temp);
a[i]=temp[0];
a[i+1]=temp[1];
}
a[i-4]='';
printf("%s", a);
cp=a;
printf("nReceive String is %s nn", cp);
sscanf((char *)buffer + strlen((char *)buffer) - 6, "%02x ", &ptr.H_FCS);
sscanf((char *)buffer + strlen((char *)buffer) - 3, "%02x ", &ptr.L_FCS);
printf("FCS value is %02x %02xnn", ptr.H_FCS,ptr.L_FCS);
SendAck(cp);
}
return *cp;
}
”寄存器错误“ 这种信息,文件也在中途停止执行。
我编的是从一个文件中读进一串数,然后写入另一个文件中,用了文件系统,为什么会这样呢?
程序:(这是里面的一个函数)
unsigned char ReceiveFrame ( FILE * fp )
{
unsigned char buffer[MAXLEN],*cp=NULL,a[MAXLEN];
struct Frame ptr;
int len = 0,i;
unsigned char temp[2];
memset(buffer, 0x00, MAXLEN);
while ( fgets((char *)buffer, MAXLEN, fp) != NULL)
{
buffer[strlen((char *)buffer)] = '';
printf("nnnThe frame you receive is : ");
printf("%s", buffer);
sscanf((char *)buffer, "%02x ", &ptr.flag);//这里开始就有错了,在Windows下可以真确的得出结果,LInux就不行了。
sscanf((char *)buffer + 3 , "%04x ", &ptr.D_address);
sscanf((char *)buffer + 8, "%04x ", &ptr.S_address);
sscanf((char *)buffer + 13, "%02x ", &ptr.type);
for(i=0,len=0;sscanf((char *)buffer + 16 + len * 3, "%s", temp) != EOF;len++,i=i+2)
{
sscanf((char *)buffer + 16 + len * 3, "%s", temp);
//printf("%s", temp);
a[i]=temp[0];
a[i+1]=temp[1];
}
a[i-4]='';
printf("%s", a);
cp=a;
printf("nReceive String is %s nn", cp);
sscanf((char *)buffer + strlen((char *)buffer) - 6, "%02x ", &ptr.H_FCS);
sscanf((char *)buffer + strlen((char *)buffer) - 3, "%02x ", &ptr.L_FCS);
printf("FCS value is %02x %02xnn", ptr.H_FCS,ptr.L_FCS);
SendAck(cp);
}
return *cp;
}
|
up