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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Монтгомери
3 / 3 / 0
Регистрация: 10.09.2013
Сообщений: 116
#1

Чтение символьного массива из файла и вывод на экран - C++

16.06.2014, 21:43. Просмотров 870. Ответов 8
Метки нет (Все метки)

Задание было: прочитать из файла символьный массив и обработать его.
Т.к. нам чтение из файла пока не давали, пришлось искать самому.
Решил для начала сделать программу чтения из файла и вывода на экран - мол, проверить, всё ли правильно понял.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
void main(void)
{ifstream input_file("C:\\file.txt");
string s;
input_file>>s;
int n=s.length();
char *line=new char[n];
while(!input_file.eof())
input_file.getline(line,sizeof(line));
for(int i=0;i<sizeof(line);i++)
cout<<line[i];
system("pause");}
Но вместо вывода на экран, я вижу только мигающий курсор и всё :-\
Подскажите, где я сделал не так?
И что заменить, чтобы работало?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2014, 21:43     Чтение символьного массива из файла и вывод на экран
Посмотрите здесь:

C++ Чтение файла и вывод его содержимого на экран
Ввод-сотрировка-вывод символьного массива C++
C++ Ввод\вывод символьного массива(оператор gets)
Чтение текста из файла и вывод на экран только тех предложений, которые не содержат запятых C++
Чтение и вывод массива из файла C++
Чтение из файла и вывод на экран C++
Как вывести на экран именно адрес символьного массива? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
16.06.2014, 21:54     Чтение символьного массива из файла и вывод на экран #2
Если совсем простой вариант, то можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void main(void)
{
    ifstream input_file("C:\\file.txt");
 
    char* line = new char[512];
    int i = 0;
 
    while(!input_file.eof())
        line[i++] = input_file.get();
    line[i] = '\0';
 
    for (int i = 0; line[i] != '\0'; ++i)
        cout << line[i];
    cout << endl;
 
        delete[] line;
    system("pause");
}
Монтгомери
3 / 3 / 0
Регистрация: 10.09.2013
Сообщений: 116
16.06.2014, 22:19  [ТС]     Чтение символьного массива из файла и вывод на экран #3
Цитата Сообщение от Issues Посмотреть сообщение
Если совсем простой вариант, то можно так:
А если для начала читать содержимое файла как string s, узнавать n=s.length(), а потом размерность line делать равной n?
Как тогда будет выглядеть код?
P.S. Просто за подобное обещали пару баллов добавить.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
16.06.2014, 22:25     Чтение символьного массива из файла и вывод на экран #4
Монтгомери, у тебя в файле одна строка всего?
Монтгомери
3 / 3 / 0
Регистрация: 10.09.2013
Сообщений: 116
16.06.2014, 22:39  [ТС]     Чтение символьного массива из файла и вывод на экран #5
Да, только одна. Это в условии было
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
16.06.2014, 22:40     Чтение символьного массива из файла и вывод на экран #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Монтгомери, можно так:
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>
 
using namespace std;
 
void main(void)
{
    const char* filename = "C:\\file.txt";
    ifstream input_file(filename);
 
    int n = 0; // количество символов в файле
 
    for(; !input_file.eof(); ++n)
        input_file.get();
 
    input_file.close();
    input_file.open(filename);
 
    if (n == 0)
        return;
 
    char* line = new char[n];
    int i = 0;
 
    while(!input_file.eof())
        line[i++] = input_file.get();
 
    for (int i = 0; i < n; ++i)
        cout << line[i];
    cout << endl;
 
    input_file.close();
    delete[] line;
 
    system("pause");
}
это будет работать даже если не одна строка.
Монтгомери
3 / 3 / 0
Регистрация: 10.09.2013
Сообщений: 116
16.06.2014, 22:41  [ТС]     Чтение символьного массива из файла и вывод на экран #7
Но может быть любой длины, поэтому за предусмотрение разных вариантов добавят те самые пару баллов.

Добавлено через 1 минуту
О, спасибо большое.
Значит, нужный массив - это line[]?
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
16.06.2014, 22:43     Чтение символьного массива из файла и вывод на экран #8
Цитата Сообщение от Монтгомери Посмотреть сообщение
Значит, нужный массив - это line[]?
да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2014, 22:50     Чтение символьного массива из файла и вывод на экран
Еще ссылки по теме:

C++ Вывод массива из файла на экран
Вывод символьного массива C++
C++ Не могу разобраться. Чтение и вывод на экран всего содержимого файла .txt на консоль
C++ Чтение текста из файла и вывод на экран предложений без запятых
C++ Вывод в консоль двумерного символьного массива

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

Или воспользуйтесь поиском по форуму:
Монтгомери
3 / 3 / 0
Регистрация: 10.09.2013
Сообщений: 116
16.06.2014, 22:50  [ТС]     Чтение символьного массива из файла и вывод на экран #9
А если нужно будет файл вводить пользователю, то что поставить вместо
C++
1
const char* filename = "C:\\file.txt";
Я так понимаю, массив filename надо вводить с клавиатуры?
Это так?
C++
1
gets(filename);
Yandex
Объявления
16.06.2014, 22:50     Чтение символьного массива из файла и вывод на экран
Ответ Создать тему
Опции темы

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