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

Запись в файл - C++

Восстановить пароль Регистрация
 
evelolka
 Аватар для evelolka
2 / 2 / 0
Регистрация: 25.10.2013
Сообщений: 108
13.06.2014, 16:14     Запись в файл #1
подскажите где я косячнул при записи в файл


В общем суть такая косяк свой никак не найду .
При открытии файла всё прекрасно читается и заменяется ,но записывается 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <fstream>
#include <cstring>
 
int main()
{
    struct lines
    {
        char line[256];
        lines*next ;
    };
    lines* head = 0 ;
    lines* curr = 0 ;
    setlocale( LC_ALL,"Russian" ) ;
    char filename[100] , findline[256] , newline[256];
    std::cout << "Введите имя файла: " ;
    std::cin.getline( filename , 100 ) ;
    std::ifstream in( filename , std::ios::in ) ;
    curr = head ;
    while( !in.eof() )
    {
        if( head == 0 )
        {
            head = new lines ;
            curr = head ;
        }
        else
        {
            curr -> next = new lines ;
            curr = curr -> next ;
        }
           in.getline( curr->line , sizeof( lines ) );
        curr -> next = 0 ;
    } ;
    in.close() ;
    curr = head ;
    while( curr != 0 )
    {
        std::cout << curr -> line << std::endl ;
        curr = curr -> next ;
    }
    std::cout << "Введите искомую строку: " ;
    std::cin.getline( findline , 256 ) ;
    curr = head ;
    while( curr -> next != 0 )
    {
        if( ( strcmp( curr->line , findline ) == 0 ) && ( curr -> next != 0 ) )
        {
            std::cout << "Введите заменяемую строку: " ;
            std::cin.getline( newline , 265 ) ;
            strcpy( curr -> line , newline ) ;
        }
        curr = curr -> next ;
    }
    curr = head ;
    while( curr != 0 )
    {
        std::cout << curr -> line << std::endl ;
        curr = curr -> next ;
    }
    std::ofstream out( filename , std::ios::out ) ;
    curr = head ;
    while( curr != 0 )
    {
        out.write( curr -> line , sizeof(  lines ) ) ;
        curr = curr -> next ;
    }
    out.close() ;
    return 0 ;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 16:14     Запись в файл
Посмотрите здесь:

C++ Запись в файл
Запись в файл C++
C++ Дописывание информации в файл
C++ Запись в файл
C++ запись в файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4326 / 3747 / 1262
Регистрация: 14.04.2014
Сообщений: 14,710
13.06.2014, 19:43     Запись в файл #2
Почему ты читаешь и записываешь sizeof(lines), а не 256? Указатель для чего записывается?
evelolka
 Аватар для evelolka
2 / 2 / 0
Регистрация: 25.10.2013
Сообщений: 108
13.06.2014, 20:51  [ТС]     Запись в файл #3
Цитата Сообщение от nmcf Посмотреть сообщение
Почему ты читаешь и записываешь sizeof(lines), а не 256? Указатель для чего записывается?
а разница какая ? так и так одинаково должно получиться поидее то
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 23:38     Запись в файл #4
C++
1
2
3
4
5
...
in.getline( curr->line , sizeof( curr ->line ) );
...
out << curr -> line << std::endl;
...
Только почему сначала чтение из файла, а потом запись? Что читаем тогда?
И открытие файла для чтения всегда проверять нужно.
Yandex
Объявления
13.06.2014, 23:38     Запись в файл
Ответ Создать тему
Опции темы

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