Eu tenho um arquivo no qual eu estou tentando olhar para esta sequência de bytes: 0xFF, 0xD8, 0xFF, e 0xE0. Por agora, vamos supor que eu estou apenas olhando para 0xFF. Eu fiz esse programa para teste:
#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);
}
Isso não está funcionando. Quando eu chamo analyzeFile com o parâmetro "test.txt", ele imprime o conteúdo do arquivo bem, mas não detectar um único 0xFF bytes:
conteúdo test.txt:
aÿØÿÿà1234
saída:
aÿØÿÿà1234
0
para referência, 0xFF é equivalente a y-trema, y, de acordo com o ASCII.
(char)bytes
como um parâmetro paraprintf
inútil? Ele será convertido de volta paraint
por padrão promoções.