Я использую этот код для записи файла:
FILE *f = fopen("out/solution.raw", "wb");
int i, j;
//SIZE = 512
for(i = 0; i < SIZE; i++)
{
fwrite(matrix[i], 1, SIZE, f);
}
fclose(f);
Проблема в том, что когда я открываю файл, он между цифрами 3 и 0, вот 2 скриншота, которые помогут вам понятьчто я имею в виду:
Вот что я должен получить:
И вот что я получаю:
Как вы можете видеть, мой код правильно записывает каждое число, но между ними есть три 0, и я понятия не имею, почему.
Я также пробовал это:
fwrite(matrix[i], sizeof(matrix[i][0]), SIZE, f);
Но ни одна из них не работает, любая помощь будет принята с благодарностью.
моя матрица объявлена как двумерный массив целых, поскольку мне нужно выполнить некоторые операции с этими числами:
matrix = (int**)malloc(SIZE * sizeof(int*));
for (i = 0; i < SIZE; i++)
{
matrix [i] = (int*)malloc(SIZE * sizeof(int*));
}
Я попробовал ваше решение, но не могу назначить неподписанный символ для int, поэтому я попытался привести его и получаюэто предупреждение:
приведение от указателя к целому числу другого размера.
unsigned char to_write;
for(i = 0; i < SIZE; i++)
{
to_write = (unsigned char)matrix[i];
fwrite(&to_write, 1, 1, f);
}
(использованный код)
После этого я получаю:
Кстати, мои данные не подписаны.