Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
IAmHereRightNow
0 / 0 / 0
Регистрация: 02.04.2017
Сообщений: 8
1

Как полностью считать текстовый файл в массив символов?

02.04.2017, 00:47. Просмотров 951. Ответов 11
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
ifstream file(name);
char line[128];
char *text = new char[size(name) + 1];
char symbol;
int i = 0;
while (!file.eof())
{
    file.getline(line, 128);
    strcat_s(text, strlen(line), line);
}
file.close();
cout << text;
Пытаюсь сделать таким способом, но выводит ошибку. В чем может быть проблема?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2017, 00:47
Ответы с готовыми решениями:

Как записать числовую матрицу в текстовый файл полностью?
Всем доброго времени суток! У меня в лабе есть три задания: записать матрицу в...

Считать файл в массив без лишних символов
здравствуйте. нужна правильная реализация задачи: на вход подается файл,...

Как можно считать файл *.pas или *.cpp как текстовый ?
ifstream abc (&quot;*.pas&quot;,ios::text); не работает, ибо у ios нет параметра text

Как считать текстовый файл в указанной директории при следующих условиях
В директории находится 1 текстовый файл, имя которого не известно. Необходимо,...

Считать csv файл полностью
Добрый день, считываю csv файл вот так int i=0; while(!creat.eof()) ...

11
Hitoku
Модератор
1703 / 1302 / 1400
Регистрация: 28.10.2016
Сообщений: 4,240
Завершенные тесты: 4
02.04.2017, 00:55 2
У меня вот так получилось
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream file("E:\input.txt");
    string mas[10]; int n = 0; char line[100];
    while (!file.eof())
    {
        n++;
        file.getline(line,100);
        mas[n] = line;
    }
    file.close();
    for (int i = 1; i <= n; i++) //вывод для проверки
    {
        cout << mas[i] << endl;
    }
    system("pause");
    return 0;
}
1
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
02.04.2017, 01:05 3
Цитата Сообщение от Hitoku Посмотреть сообщение
У меня вот так получилось
Цитата Сообщение от Hitoku Посмотреть сообщение
ifstream file("E:\input.txt");
Ошибки повторяются? Открытие файла для чтения всегда проверять нужно.
Цитата Сообщение от Hitoku Посмотреть сообщение
C++
1
2
while (!file.eof()) 
{
Плохая конструкция, часто приводящая к ошибкам.
0
IAmHereRightNow
0 / 0 / 0
Регистрация: 02.04.2017
Сообщений: 8
02.04.2017, 01:06  [ТС] 4
За код спасибо, но необходимо считать все без использования string.
Я пытаюсь сделать так: считать кусочек и тут же его записать в массив, но что-то идёт не так

Там ошибка скорее всего в вызове strlen. И еще до меня дошло, что надо же еще и пробелы в массив записать, а они теряются.
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
02.04.2017, 01:10 5
Лучший ответ Сообщение было отмечено IAmHereRightNow как решение

Решение

Добавлено через 3 минуты
Цитата Сообщение от IAmHereRightNow Посмотреть сообщение
Как полностью считать текстовый файл в массив символов?
Цитата Сообщение от IAmHereRightNow Посмотреть сообщение
необходимо считать все без использования string.
Тогда, сначала нужно узнать размер файла. Потом выделить память нужного размера. Потом туда читать.
http://www.cplusplus.com/reference/istream/istream/tellg/
1
IAmHereRightNow
0 / 0 / 0
Регистрация: 02.04.2017
Сообщений: 8
02.04.2017, 01:14  [ТС] 6
C++
1
2
3
4
5
6
7
8
int size()
{
    ifstream file(name);
    file.seekg(0, ios::end);
    int size = file.tellg();
    file.close();
    return size;
}
Добавлено через 2 минуты
Я создаю динамический массив char, пытаюсь туда читать, но не выходит, я что-то неправильно делаю.
0
Hitoku
Модератор
1703 / 1302 / 1400
Регистрация: 28.10.2016
Сообщений: 4,240
Завершенные тесты: 4
02.04.2017, 01:16 7
nd2, только осваиваю язык...
Цитата Сообщение от nd2 Посмотреть сообщение
Открытие файла для чтения всегда проверять нужно.
Вы это имеете в виду?
C++
1
if (file.is_open)
Цитата Сообщение от nd2 Посмотреть сообщение
Плохая конструкция, часто приводящая к ошибкам.
Не могли бы вы сказать вкратце какие есть альтернативы?
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
02.04.2017, 01:18 8
Цитата Сообщение от Hitoku Посмотреть сообщение
Вы это имеете в виду?
У тебя опять одинарный обратный слеш в пути. Файл не должен открыться. Обратный слеш двойным нужно делать.
Цитата Сообщение от IAmHereRightNow Посмотреть сообщение
я что-то неправильно делаю.
По ссылке пример есть.

Добавлено через 1 минуту
Цитата Сообщение от Hitoku Посмотреть сообщение
Не могли бы вы сказать вкратце какие есть альтернативы?
Помещай чтение в параметры while().
1
Hitoku
Модератор
1703 / 1302 / 1400
Регистрация: 28.10.2016
Сообщений: 4,240
Завершенные тесты: 4
02.04.2017, 01:20 9
Цитата Сообщение от nd2 Посмотреть сообщение
Файл не должен открыться
Но он открывается У меня была проблема со слэшем, если имя файла начинается на f, а так всё нормально открывает и читает
0
IAmHereRightNow
0 / 0 / 0
Регистрация: 02.04.2017
Сообщений: 8
02.04.2017, 01:27  [ТС] 10
Спасибо огромное, все работает (как в примере по ссылке).
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
02.04.2017, 01:48 11
Цитата Сообщение от Hitoku Посмотреть сообщение
Но он открывается
В любом случае это неправильно. Тут открывается, с другим компиляторе (или при других сочетаниях, или на другой ОС) не откроется. Компилятор предупреждение по этому поводу выдаёт: i: неизвестная escape-последовательность, т.е., он воспринимает это как escape-последовательность, а не как обратный слеш.
И, в любом случае, открытие файла для чтения всегда проверять нужно.
1
Hitoku
02.04.2017, 01:53     Как полностью считать текстовый файл в массив символов?
  #12

Не по теме:

nd2, буду иметь в виду, спасибо за советы :)

0
02.04.2017, 01:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2017, 01:53
Привет! Вот еще темы с ответами:

Почему полностью не считывает текстовый файл?
Задание: Текстовый файл содержит записи о телефонах и их владельцах....

Можно ли в массив чаров считать строку полностью?
У меня получается считать только первое слово, понимаю что есть функция...

Считать текстовый файл из интернета
Здравствуйте. Подскажите пожалуйста как считать все данные из текстового файла,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru