Это неправильно:
matrix= (int**) malloc(row* sizeof(int));
Это должно быть sizeof(int*)
вместо sizeof(int)
.
Это тоже неправильно:
for (i=0;i<col;i++)
{
for (j=0;j<row;j++)
{
matrix[i][j]=1+rand()%1000000;
Когда вы Вы выделили массивы, у вас было row
первое и col
второе, но теперь у вас есть col
первое и row
второе. Это должно быть matrix[j][i]
вместо matrix[i][j]
.
И это действительно очень неправильно:
fwrite(matrix,sizeof(matrix),matrix,tfile);
Почему вы думаете, что указатель является подходящим значением для nmemb
? И указатели не являются массивами. У вас есть указатель, а не массив, поэтому вы не можете использовать один вызов fwrite
для записи всего. Вам нужно будет делать это построчно изнутри al oop.
И даже если ваша программа работает правильно, вы все равно получите вывод "crypti c", так как вы ' Я буду писать кучу случайных чисел в двоичной форме. Если вы хотите, чтобы они были текстом ASCII, вам нужно будет использовать что-то вроде fprintf
вместо fwrite
.