У меня есть файл, в котором я пытаюсь найти эту последовательность байтов: 0xFF, 0xD8, 0xFF и 0xE0. На данный момент давайте предположим, что я ищу только 0xFF. Я сделал эту программу для тестирования:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void analyzeFile(char* filename)
{
FILE* filePtr = fopen(filename, "rb");
int numImages = 0;
while (!feof(filePtr))
{
char bytes;
bytes = getc(filePtr);
printf("%c", bytes);
if ((bytes == 0xFF))
{
numImages++;
printf("image found!\n");
}
}
printf("%d\n", numImages);
}
Это не работает. Когда я вызываю analyzeFile с параметром "test.txt", он отлично выводит содержимое файла, но не обнаруживает ни одного байта 0xFF:
содержание test.txt:
aÿØÿÿà1234
выход:
aÿØÿÿà1234
0
для справки, 0xFF эквивалентно y-диарезе, y, в соответствии с ASCII.
(char)bytes
в качестве параметра дляprintf
бесполезно? Он будет отброшен обратно вint
по акциям по умолчанию.