Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 9

Чтение из файла в динамический массив

13.01.2017, 14:19. Показов 5828. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <fstream>
using namespace std;
 
 
 
 
int main() {
    
    ifstream fin;
    fin.open("text.txt");
    char s;
    int  sizeOfText = 0;
    while (fin>>s) {//подсчет количества символов в файле
        sizeOfText++;
        }
 
    char* text=new char[sizeOfText];
    fin.clear();
    fin.seekg(0);
    
for(int i=0;i<sizeOfText;i++) {//из файла в массив
        char s;
        if (fin.get(s)) {
            text[i] = s;
        }
 
    }
    
    cout << text << endl;
    fin.close();
 
    system("PAUSE");
    return (0);
}
Само считывание информации с файла работает, но при выводе массива выводится еще и мусор. Мне кажется, что дело в том, что компилятор выделяет больше памяти при создании массива, чем было указано. Как сделать так, чтобы в массиве было только то, что было в файле? Посимвольный вывод не подходит, так как потом массив нужно передать функции, которая будет его обрабатывать.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.01.2017, 14:19
Ответы с готовыми решениями:

Чтение из файла в динамический массив
Здравствуйте. Такая проблема. Читаю из файла числа в динамический массив. Сначала посчитал количество символов, создал массив и...

Чтение из файла в динамический массив
Подскажите, читаю из файла количество элементов, затем элементы, но выводит нули.. Что не так? пример фала: 500 -0,103418643 ...

Чтение из файла в динамический массив
Всем здравствуйте. Рабочий вариант чтения в байтовый массив: ifstream in(sFileName, ios::binary); char* buf; ...

8
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
13.01.2017, 14:39
для начала добавьте проверку на открытие файла:
C++
1
2
3
4
if(!fin.is_open()) {
        cout << "error during openning file" << endl;
        return 1;
    }
и считывать файл таким образом не лучшая идея. Почитайте http://stackoverflow.com/quest... tring-in-c тут много вариантов чтения файла.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
13.01.2017, 14:40
Цитата Сообщение от Lambo Посмотреть сообщение
while (fin>>s) {//подсчет количества символов в файле
исключая пробелы, переносы строк, символы табуляции
Ну вы поняли.
0
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 9
13.01.2017, 14:46  [ТС]
Это просто пример, вопрос в другом - как же сделать так, чтобы в массиве было только содержимое файла
0
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
13.01.2017, 14:52
Цитата Сообщение от Lambo Посмотреть сообщение
char* text=new char[sizeOfText];
А у вас что каждое слово по одной только букве/цифре в файле?

Добавлено через 1 минуту
Цитата Сообщение от Lambo Посмотреть сообщение
fin>>s
вот это - целое слово считывает а не один символ
0
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 9
13.01.2017, 14:59  [ТС]
jurok_85, Почему? Мне нужно все содержимое файла записать в массив, и чтобы в конце массива не было мусора.

Добавлено через 3 минуты
jurok_85, нет, оно считывает посимвольно
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
13.01.2017, 15:06
Лучший ответ Сообщение было отмечено Lambo как решение

Решение

Цитата Сообщение от jurok_85 Посмотреть сообщение
вот это - целое слово считывает а не один символ
Учитывая, что s имеет тип char - сомневаюсь.

Добавлено через 3 минуты
Раскомментируйте нужную строку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
 
int main()
{
    std::ifstream ifs("input.txt");
    if (!ifs)
        return 1;
    using it = std::istreambuf_iterator<char>; // с символами переноса строк, пробелами и т.д.
    //using it = std::istream_iterator<char>; // без символов переноса строк, пробелов и т.д.
    const std::string text {it(ifs), it()};
    std::cout << text;
}
1
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
13.01.2017, 15:21
Цитата Сообщение от MrGluck Посмотреть сообщение
Учитывая, что s имеет тип char - сомневаюсь.
а ну да, извиняюсь

Добавлено через 8 минут
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
#include <iostream>
#include <fstream>
using namespace std;
 
 
int main(){
 
ifstream in("txtfile.txt");
in.seekg(0, in.end);
 
int n = in.tellg();// размер файла
 
in.seekg(0);
 
 
char* text=new char[n];
for(int i = 0; i != n; i++){
    char s;
        if (in.get(s)) {
            text[i] = s;
        }
}
cout << text;
 
 
}
1
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 9
13.01.2017, 15:38  [ТС]
MrGluck, спасибо, после перевода из строки в массив все работает нормально
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2017, 15:38
Помогаю со студенческими работами здесь

Чтение данных из файла в динамический массив структур
Здравствуйте, подскажите пожалуйста, как можно осуществить чтение данных из файла в динамический массив структур? Или может можно как то...

Чтение файла в динамический двумерный массив
Задача сама по себе простая , но как бы я не пытался заполнять ни по строчно через fgets ни по символьно, всеровно получаю ерунду, сама...

Чтение файла используя динамический массив
Выполнить задание по чтению файла используя динамический массив. То есть, нужно написать код, который будет считывать числа с файла, и...

Чтение данных из текстового файла и добавление их в динамический массив
Здравствуйте. Имеется динамический массив записей ( номер, ФИО, должность), а также текстовый файл откуда берутся данные для массива....

Чтение из бинарного файла в линейный динамический список
У меня есть бинарный файл,который содержит массив структур.Нужно на основании этого файла создать линейный динамический список.Как...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru