【发布时间】:2019-03-30 02:08:08
【问题描述】:
我直接从制造商那里得到了这个源代码,但我无法编译它。我总是在文件错误中收到 EOF。
我正在使用 Pelles C 在 Windows 10 X64 上进行编译。似乎它应该很简单,但我无法弄清楚。它应该是一个程序,我提供一个字符串,它应该打印一个 crc
int main(){
str scan = "";
printf("Enter String");
fgets(scan, 10, stdin);
calc_crc_half(scan, 4);
return(0);
}
INT16U cal_crc_half(INT8U far *pin, INT8U len){
INT16U crc;
INT8U da;
INT8U far *ptr;
INT8U bCRCHign;
INT8U bCRCLow;
INT16U crc_ta[16]={
0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef
};
ptr=pin;
crc=0;
while(len--!=0)
{
da=((INT8U)(crc>>8))>>4;
crc<<=4;
crc^=crc_ta[da^(*ptr>>4)];
da=((INT8U)(crc>>8))>>4;
crc<<=4;
crc^=crc_ta[da^(*ptr&0x0f)];
ptr++;
}
bCRCLow = crc;
bCRCHign= (INT8U)(crc>>8);
if(bCRCLow==0x28||bCRCLow==0x0d||bCRCLow==0x0a){
bCRCLow++;
}
if(bCRCHign==0x28||bCRCHign==0x0d||bCRCHign==0x0a){
bCRCHign++;
}
crc = ((INT16U)bCRCHign)<<8;
crc += bCRCLow;
printf(crc);
return(crc);
}
我希望输出是一个四字符的字符串。
【问题讨论】:
-
此代码不会打开或读取文件。您需要发布产生错误的代码。
-
这是我从制造商那里得到的代码,我只是对其进行了格式化,以便于阅读。当我尝试使用“pomake.exe makefile”编译它时出现错误。
-
原谅我,但你知道这不是一个可执行程序吗?这是一个函数的代码。你确实有一个带有
main函数的可执行程序,对吧? -
我添加了一个 main() 函数。我会更新原帖。
-
这个
str类型是什么?它如何与fgets()一起使用,它需要一个至少包含 10 个元素的 char 数组?
标签: c compilation eof crc pelles-c