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

C++ Ошибка сегментирования - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.62
von_Manstein
17 / 17 / 0
Регистрация: 23.01.2011
Сообщений: 61
17.03.2011, 20:36     C++ Ошибка сегментирования #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
#include <fstream>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    char theFile[81], theChar;
    cout << "Введите название файла: ";
    cin.get(theFile, 81);
    cout << "Файл: " << theFile << " ... " << endl;
 
    ifstream fin(theFile);
    ofstream fout("output");
 
    vector<char> theTextSpace;
 
    for(int i=0; fin.get(theChar) ; i++)
    {
        theTextSpace[i] = theChar;
    }
 
    for(int i=0; i<theTextSpace.size() ; i++)
    {
        cout << theTextSpace[i] << " ";
    }
 
    fin.close();
    fout.close();
 
    return 0;
}
На этом этапе после ввода имени файла выводит ошибку сегментирования и завершает работу. За алгоритм не ругайте, это далеко не готовая прога. Просто не пойму, на что может ругаться ofstream? ОС Linux, права выставлены ради эксперимента все.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2011, 20:36     C++ Ошибка сегментирования
Посмотрите здесь:

Ошибка сегментирования (core dumped) C++
C++ Ошибка сегментирования.
ошибка сегментирования C++
C++ Ошибка сегментирования
Ошибка сегментирования C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
17.03.2011, 20:43     C++ Ошибка сегментирования #2
Цитата Сообщение от von_Manstein Посмотреть сообщение
theTextSpace[i] = theChar;
Попробуйте заменить на
C++
1
theTextSpace.push_back(theChar);
von_Manstein
17 / 17 / 0
Регистрация: 23.01.2011
Сообщений: 61
17.03.2011, 20:48  [ТС]     C++ Ошибка сегментирования #3
Спасибо, работает! Только пока не пойму как и почему не работал мой вариант? Не подскажете, так сказать, на будущее?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
17.03.2011, 21:01     C++ Ошибка сегментирования #4
von_Manstein, Да все определенно просто, что бы использовать перегруженый оператор [], надо задавать размер вектора явно, тоесть так
C++
1
vector<char> theTextSpace(10);
von_Manstein
17 / 17 / 0
Регистрация: 23.01.2011
Сообщений: 61
17.03.2011, 21:03  [ТС]     C++ Ошибка сегментирования #5
Понял, спасибо за науку, в моём случае не канает, ибо не знаю размер файла точно (рассчитано под разные файлы), и потому он и динамически расширяться не может, этот вектор. А в Вашем примере он добавляет необходимую длину, увеличиваясь, чтобы вместить всё что надо. Так понял?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
17.03.2011, 21:51     C++ Ошибка сегментирования #6
Цитата Сообщение от von_Manstein Посмотреть сообщение
А в Вашем примере он добавляет необходимую длину, увеличиваясь, чтобы вместить всё что надо. Так понял?
Да, в принципе, это так.
Yandex
Объявления
17.03.2011, 21:51     C++ Ошибка сегментирования
Ответ Создать тему
Опции темы

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