Почему в фаиле не пишется информация NameOfDisk
Код:
#include "stdafx.h"
#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <io.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
int main(int argc, char* argv[])
{
char ** NameOfDisk = new char * [8];
for (int k = 0; k < 8; k++)
NameOfDisk[k] = new char [32];
char buffer[32],DisksName[516];
for(int i=0;i<8;i++)
{
cout<<"Enter "<<i<<" Disk:"; cin>>buffer;
if(i==0)
{
strcpy(DisksName,buffer);
strcat(DisksName,"|");
}
else
{
strcat(DisksName,buffer);
strcat(DisksName,"|");
}
}
int Length = strlen(DisksName);
int j=0; k=0;
for(i=0;i<Length;i++)
{
if(DisksName != '|')
{
NameOfDisk[j][k] = DisksName;
k++;
}
else
{
NameOfDisk[j][k] = '\0';
j++;
k=0;
}
}
int File = open("File.db",_O_RDWR | _O_CREAT | _O_BINARY, _S_IREAD | _S_IWRITE );
write(File,NameOfDisk,sizeof(NameOfDisk));
close(File);
delete NameOfDisk;
return 0;
}
Код:
Помагите исправить данный код
Пробуй так:
FILE * WriteFile;
WriteFile = fopen("File.db", "wb");
fwrite(NameOfDisk,sizeof(char), 256, WriteFile);
fclose(WriteFile);
fread(NameOfDisk,sizeof(char), 256, WriteFile);
fclose(WriteFile);
cout<<NameOfDisk[0]<<NameOfDisk[1]<<...
Так не получается
есс-но. файл ведь открыт только для записи. Читай мсдн. про функцию. fopen там второй параметр указывает - режим открытия файла. "wb" режим побайтовой записи. для чтения открывай как "rb".
WriteFile = fopen("File.db", "rb");
fread(NameOfDisk,sizeof(char),256,WriteFile);
fclose(WriteFile);
Что не так ???????
И еще замечание - насколько я понимаю - ты сначала выделяешь массив указателей, потом для каждого указателя выделяешь по массиву.
Но!! освобождаешь ты память неправильно.
Во-первых. когда ты пишешь код:
int * pArray = new int [MAX_SIZE];
то очишать память нужно таким образом
delete [] pArray;
Во-вторых, сначала нужно освободить память каждого подмассива, а потом уже первоначального.