Я получаю ошибку сегментации в строке 28 приведенного ниже кода. Примечание: программа не завершена.
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // get data FILE* raw = fopen(«card.raw», «r»); int rawLength = 0; while(fgetc(raw) != EOF){ rawLength++; } char dat[rawLength + 1]; fread(dat, 1, rawLength + 1, raw); // separate data into blocks int data[sizeof(dat) / 512][512]; data[0][0] = atoi(*dat[0]); // <———— this is line 28 where the error is happening. for(int i = 0; i < sizeof(data) / 4; i += 512) { for(int j = 0; j < 512; j++) { data[i][j] = atoi(*dat[i + j]); } } }
Этот код должен открыть необработанный файл с именем «card.raw» и прочитать его содержимое и размер. Затем он проверяет наличие jpeg внутри файла, используя официальный заголовок jpeg: «0xff 0xd8 0xff [что-то от 0xe0 до 0xef]».
На данный момент это все, что он делает, но когда я закончу с ним, он должен сохранить каждый найденный jpeg в новом файле. По сути, это система восстановления jpeg, поскольку папка для мусора ваших устройств похожа на нее. Все, о чем я прошу, это выяснить ошибку; вам не нужно писать целую программу восстановления, если вы не можете прямо сейчас. спасибо за помощь!
Почему бы тебе не попробовать его отладить? Если вы не можете использовать отладчик, добавьте распечатки. Например, проверьте / распечатайте значение rawLength, длину dat после того, как вы прочитали его из raw файла. Я предполагаю, что dat не ‘