主要,我有一个for循环来更改从文件开始读取的起点,即(int start)size是要检查的文件的大小,而vsize是病毒的大小。 我在fseek上遇到了例外。
int normalScan(FILE * file,FILE* virus, int start,int size,int vsize)
{
int found = 0;
char* buffer = (char*)malloc((vsize + 1) * sizeof(char));
char* virusSig = (char*)malloc((vsize + 1) * sizeof(char));
if (start + vsize <= size+1)
{
fseek(file, vsize, start + 1);
fread(buffer, sizeof(char), vsize, file);
fread(virusSig, sizeof(char), vsize, virus);
rewind(file);
int result = memcmp(buffer, virusSig,vsize);
if (result == 0)
{
found = 1;
}
else
{
found = -1;
}
}
if (found != 0)
{
free(virusSig);
free(buffer);
return found;
}
else
{
free(virusSig);
free(buffer);
return -1;
}
}