Форум программистов, компьютерный форум CyberForum.ru

Динамический массив строк. Ввод / вывод - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
gluck-a
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 23
31.05.2010, 05:59     Динамический массив строк. Ввод / вывод #1
Доброго времени суток!=) Помогите разобраться. Пишу функцию удаления строки из файла. организовал следующим образом, записал все что есть в файле в динамический массив строк. удалил нужную строку в массиве. потом пытаюсь вывести информацию на экран которая в массиве, а там аброкадабра(((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void del(void)
{
    FILE *BD;
    Persson p;
    int IDbuf=1,i=0;
    
BD=fopen("d:\BD.dat","r");
        
        fscanf(BD,"%d%s%s%lf",&p.ID,p.lastName,p.firstName,&p.Oklad);
        while(!feof(BD))
        {
        fscanf(BD,"%d%s%s%lf",&p.ID,p.lastName,p.firstName,&p.Oklad);
        IDbuf++;
        }
        fclose(BD);
 
 
char **mas = new char*[256];
if ((BD=fopen("d:\BD.dat","r"))==NULL)
    {
        printf("Не возможно открыть фал BD.txt\n");
        return;
    }
        fscanf(BD,"%d%s%s%lf",&p.ID,p.lastName,p.firstName,&p.Oklad);
        mas[p.ID] = new char[p.ID,p.lastName,p.firstName,p.Oklad];
        while(!feof(BD))
        {
        mas[p.ID] = new char[p.ID,p.lastName,p.firstName,p.Oklad];
        fscanf(BD,"%d%s%s%lf",&p.ID,p.lastName,p.firstName,&p.Oklad);
        }
 
printf("ВВедите ID работника которого хотите удалить\n");
cin>>i;
delete mas[i];
 
for(i=0;i<IDbuf-1;i++) 
    printf("%s\n",mas);
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
01.06.2010, 17:52     Динамический массив строк. Ввод / вывод #21
так оно тебе на экран и выводит, а потом можешь со второго в первый переписать если надо)))

задание конкретно какое?

Добавлено через 1 час 58 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const int lll=3;
class student { public:
                int a;
                char b[256];
};
 
int main(){
    int ini=0; cout<<"ecli inizializir vvedite 1   "; cin>>ini;
    student ddd[lll];
    if (ini) {
    ofstream out ("222.txt",ios::binary);
    for (int i=0; i<lll; i++) {cin>> ddd[i].a>> ddd[i].b;} 
    out.write((char*)&ddd,sizeof ddd); 
    out.close();}
    ifstream fin ("222.txt",ios::binary);
    fin.read ((char*)&ddd,sizeof ddd);
    fin.close();
    for (int i=0; i<lll;i++)
    cout <<ddd[i].a<<" "<<ddd[i].b<<endl;
    int l=0;  cin>>l; // кого хотим удалить
    int i;
    
    for (i=(l-1); i<lll-1; i++) 
    ddd[i]=ddd[i+1]; ddd[i].a=0;ddd[i].b[0]='0';// удалили как бы 
    for (int i=0; i<lll;i++)
    cout <<ddd[i].a<<" "<<ddd[i].b<<endl;
    ofstream kout ("222.txt",ios::binary);
    kout.write((char*)&ddd,sizeof ddd);
    kout.close();
 
    cin.get();
    return 0;}
усли с классами то как то так)))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gluck-a
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 23
02.06.2010, 01:39  [ТС]     Динамический массив строк. Ввод / вывод #22
задание)) вот оно))
В разделе 3 курсовой работы спроектируйте классы.
Базовый класс включает конструктор с параметрами для создания объектов в динамической области памяти,
деструктор, сообщающий об уничтожении объекта. Производный класс включает конструктор с параметрами и с списком
инициализаторов, передающий данные конструктору базового класса, переопределенные методы необходимые для работы
с компонентами объектов и обязательно переопределить операторы ввода и вывода. Программа
должна включить виртуальные функции. Напишите программу демонстрации обработки массива(или связанный список)
объектов объявленных классов, используя соответствующее меню.
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
02.06.2010, 15:03     Динамический массив строк. Ввод / вывод #23
нужно уточнить ! Создание объектов или выделение памяти для членов класса и их инициализация, в конструкторе; если верно то как у тебя написано то одолевают смутные сомнения, нужно поинтересоваться у местных гуру ???
gluck-a
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 23
02.06.2010, 15:26  [ТС]     Динамический массив строк. Ввод / вывод #24
хз))) лично мне дизайнеру это тааааак дуго даётся что ппц)) а сдать хвост ну оч. нужно)) купленная курсовая не прокатывает))) поэтому разбераюсь сам... я повис на простой вещи в принципе, это затолкать строку из файла в динамический массив строк, а потом из этого массива ввести в файл ну или хотя бы на экран...
и времени мало остаётся, обидно если выгонят(( 3 курса уже отучился(
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
02.06.2010, 15:38     Динамический массив строк. Ввод / вывод #25
я так понял что тебе нужно не строку из файла затолкать (это раз плюнуть) а прочитать данные из файла в класс и с ним уже работать
gluck-a
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 23
02.06.2010, 15:40  [ТС]     Динамический массив строк. Ввод / вывод #26
не, с классам там проблем нет, мне именно строку вида
2 какашкин саша 900.00
закинуть в этот массив, а потом прочитать, вот еннто могешь помочь? Ну, ооочень нужно)
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
02.06.2010, 15:57     Динамический массив строк. Ввод / вывод #27
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main(){
        ifstream in ("111.txt");
        //ofstream out ("222.txt");
        string temp [40];       
        string a;
        int k=0; 
while (getline (in,a)){
        a+="\n";
        temp[k]=a; k++;}
for (int i=0; i<=k; i++) cout<<i<<" "<< temp[i];
        
    
 
return 0;}
вот самый простой метод без танцев с бубном(если можно юзать стринги они и так динамически выделяются) если не подойдет будем с твоим массивом разбираться;
gluck-a
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 23
02.06.2010, 16:28  [ТС]     Динамический массив строк. Ввод / вывод #28
хм, не то кажись или опять чот не так понял(((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
 
 
int main()
{
        ifstream in ("DB.dat"); //это так понял открывает файл
                string temp [40];      //это размер строк временных 
        string a; //это строки с файла
                int k=0; //счетчик
while (getline (in,a)) //цикл тока не понял как он работает
{
   a+="\n";
   temp[k]=a; k++;
}
for (int i=0; i<=k; i++) 
    cout<<i<<" "<< temp[i]; //и хрен он что выводит
           
return 0;
cin.get();
}
вообщем не получилось(((
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
02.06.2010, 18:06     Динамический массив строк. Ввод / вывод #29
ifstream in ("D:\\DB.dat"); или как там у тебя диск называется, если в текстовом формате запись то нормально прочитает;

Добавлено через 14 минут
[quote=gluck-a;773925]while (getline (in,a)) //цикл тока не понял как он работает[/quote
getline (in,a)) считывает одну строку из потока(in) и присваивает это зачение а, когда доходим до конца файла ф-я возвращает false и цикл прерывается, к а добовляем символ перехода на новую строку при прочтении он теряется
gluck-a
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 23
02.06.2010, 19:15  [ТС]     Динамический массив строк. Ввод / вывод #30
поменял на текстовый как вы водил один единственный 0 на экран так и выводит((( или я опять чот не так понял?
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
02.06.2010, 19:18     Динамический массив строк. Ввод / вывод #31
я ж те путь к файлу подправил смотри пост ifstream in ("D:\\DB.dat"); оно и в датовском прочитает важно как в самом файле информация записана
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2010, 20:57     Динамический массив строк. Ввод / вывод
Еще ссылки по теме:

Ввод данных в динамический массив из файла C++
C++ Ввод данных в динамический массив из файла
C++ Двумерный динамический массив. Ввод размера с клавиатуры

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gluck-a
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 23
02.06.2010, 20:57  [ТС]     Динамический массив строк. Ввод / вывод #32
Странно, но, что *.dat, что *.txt - выводит 0, в файле инфа текстовая. а с моим массивом сложно разобраться?
Yandex
Объявления
02.06.2010, 20:57     Динамический массив строк. Ввод / вывод
Ответ Создать тему
Опции темы

Текущее время: 14:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru