У меня есть несколько проблем с моим кодом, который я не уверен в понимании. Я читаю в файле (вы можете попробовать с любым файлом), чтобы получить шестнадцатеричные значения. Я пытаюсь найти определенные шестнадцатеричные значения и изменить их - это работает, но это намного позже, чем должно быть. Пример будет:Шар меняющий сосед
0xAA 0xAB 0xAC 0xAD 0XAE ... 0XCD 0xCE
Я хотел бы изменить 0xAB, но мой код меняет 0XCD. не знаю, почему это происходит, но, возможно, я делаю это неправильно. также есть способ автоматически получить длину файла? Я просто помещаю буфер, который является частью файла, но я хотел бы получить реальную длину.
#include <stdio.h>
#include <string.h>
#define FLEN 512
int convert_to_hex(char c);
int main(int argc, char *argv[]) {
char c;
int i = 0;
FILE *fp = fopen(argv[1],"rb");
for(i = 0; i < FLEN; i++) {
c = convert_to_hex(fgetc(fp));
printf("%02x ", c);
}
printf("\n");
}
int convert_to_hex(char c)
{
char hexVal[3];
sprintf(hexVal, "%02X", 0x69);
if(strncmp(&c, hexVal, 2) == 1) {
printf(">> %s ", hexVal); // indicate where it change (late)
return c + 1;
}
return c;
}
Должен быть char hexVal [4] вместо hexVal [3], одно место для нулевого завершающего символа – novice
http://stackoverflow.com/questions/238603/how-can-i-get-a-files-size -in-c - Чтобы получить длину файла в C++ – novice
@novice - да, он все равно имеет такое же поведение. спасибо за другую ссылку тоже –