Это часть кода C. Мне нужна помощь, чтобы исправить это. Эта программа проверяет, есть ли подпись файла в другом файле. Если это так, функция находит совпадение, а затем возвращает 1
, а затем возвращает 0
.Поиск части файла в другом файле
Проблема в том, что она всегда возвращает 0
, даже если она должна быть возвращена 1
.
Это функция я писал:
int scanFile(char* file_name, FILE * virus_signature, long virus_size) //Scan the given file to see if he has the signature
{
FILE * file_for_scan = fopen(file_name, "rb");
char ch_temp, ch_temp2;
int i = 0;
fseek(virus_signature, 0, SEEK_SET);
while ((ch_temp = fgetc(file_for_scan)) != EOF)
{
if ((ch_temp2=fgetc(virus_signature)) == ch_temp)
{
i++;
if (i == virus_size)
{
fclose(file_for_scan);
return 1;
}
}
else
{
i = 0;
fseek(virus_signature, 0, SEEK_SET);
}
}
fclose(file_for_scan);
return 0;
}
Пожалуйста, помогите мне исправить мой код.
Объясните, что не так с кодом –
В чем ваша проблема? – Eenoku
Программа работает не очень хорошо. Он возвращает все время 0, а не 1, когда он должен быть возвращен. – uriburg