Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Почему в фаиле не пишется информация NameOfDisk

1.8K
12 июня 2007 года
ViToBrother
149 / / 13.05.2007
 
Код:
 

#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;
}
 
Код:
 


Помагите исправить данный код
255
12 июня 2007 года
Dart Bobr
1.4K / / 09.04.2004
Ясное дело. потому-что ты не выводишь в файл. с какой стати туда что-то должно записываться??
Пробуй так:
FILE * WriteFile;
WriteFile = fopen("File.db", "wb");
fwrite(NameOfDisk,sizeof(char), 256, WriteFile);
fclose(WriteFile);
1.8K
12 июня 2007 года
ViToBrother
149 / / 13.05.2007
А как прочитать информацию из файла и вывести на экран
fread(NameOfDisk,sizeof(char), 256, WriteFile);
fclose(WriteFile);

cout<<NameOfDisk[0]<<NameOfDisk[1]<<...

Так не получается
255
12 июня 2007 года
Dart Bobr
1.4K / / 09.04.2004
есс-но. файл ведь открыт только для записи. Читай мсдн. про функцию. fopen там второй параметр указывает - режим открытия файла. "wb" режим побайтовой записи. для чтения открывай как "rb".
1.8K
12 июня 2007 года
ViToBrother
149 / / 13.05.2007
И так не получается

WriteFile = fopen("File.db", "rb");
fread(NameOfDisk,sizeof(char),256,WriteFile);
fclose(WriteFile);

Что не так ???????
255
12 июня 2007 года
Dart Bobr
1.4K / / 09.04.2004
а что выводит. Если ошибку - то код. если иксепшн - то текст иксепшена приведи. Скорее всего нужно указать в имени файла путь к нему.

И еще замечание - насколько я понимаю - ты сначала выделяешь массив указателей, потом для каждого указателя выделяешь по массиву.
Но!! освобождаешь ты память неправильно.
Во-первых. когда ты пишешь код:

int * pArray = new int [MAX_SIZE];

то очишать память нужно таким образом

delete [] pArray;

Во-вторых, сначала нужно освободить память каждого подмассива, а потом уже первоначального.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог