【发布时间】:2012-02-13 12:00:16
【问题描述】:
FILE *f;
char buffer[201];
f=fopen("file.txt","r");
if (f==NULL)
{
printf("file doesn't exist?!\n");return 1;
}
while(1)
{
if ((fgets(buffer, 200, f) == NULL))
break;
instruction = validatehex(buffer);
if(instruction == - 1)
continue;
PC += 4;
Decode(instruction,verbose);
}
上面的代码逐行验证它从文件中获取输入。 问题出在 validatehex 函数中,即使值正确,它也总是打印“不正确”。此代码在 Windows 中 100% 完美运行,而不是在 linux(Ubuntu) 中。
uint32_t validatehex(char input[])
{
char hexchars[] = "1234567890abcdefABCDEF";
uint32_t hexvalue = 0;
char last;
if((strlen(input) != strspn (input,hexchars)) && ((strlen(input)-1 != strspn (input,hexchars)) && input[8] != '\0'))
{
printf("NO CORRECT\n");
return INERR;
}
sscanf(input,"%08x",&hexvalue);
return hexvalue;
}
我已经使用 mingw32 c 编译器在 Windows 上进行了尝试,它运行良好。 它读取的文件仅包含每行 8 位长的十六进制值。
谁能看到代码哪里出错了?或者为什么它在 Linux 中的工作方式不同?
【问题讨论】:
-
too_______many_______________空间_______________请_____删除_________他们
标签: c windows linux validation file-io