Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
fredopudge
1 / 1 / 0
Регистрация: 05.03.2016
Сообщений: 49
1

Прочитать символы из файла, используя eof() (программа работает не так, как ожидается)

05.10.2016, 05:56. Просмотров 1054. Ответов 7
Метки нет (Все метки)

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
        char fs[1000];
        int size = 0;
 
    fstream file("C:\\Users\\Даниил\Desktop\file.txt");
 
    while (!file.eof())
    {
        file >> fs[size];
                size++;
 
        for (int i = 0; i < 20; i++)
        {
            cout << fs[i];
        }
    }
    file.close();
}
Пробовал даже просто выводить что-либо while(!file.eof()), всё равно бесконечный цикл.
Ещё есть подозрение на настройки в студии, так как недавно переустановил.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2016, 05:56
Ответы с готовыми решениями:

Почему при вводе элементов массива, программа прекращает работу или работает не так, как ожидается?
При вводе элементов массива, программа прекращает работу или не правильно работает. Например если...

Объяснить, почему программа для подсчёта скобок в тексте работает не так, как ожидается
я ввожу текст в блокноте с скобками, мне нужно подсчитать количество скобок в программе, но у меня...

#define работает не так, как ожидается
Здравствуйте. Подскажите, пожалуйста, почему в таком случае некорректно использовать #define: ...

Условие в цикле do while работает не так, как ожидается
Проблема в условие цикла. Вот Код.// ConsoleApplication4.cpp: определяет точку входа для...

7
DemolitionMan
130 / 156 / 87
Регистрация: 06.04.2016
Сообщений: 992
05.10.2016, 06:08 2
C++
1
Строка 6: fstream file("C:\\Users\\Даниил\Desktop\file.txt");
- абсолютно неправильно написано, 2 ошибки.
1) Где 2-й обратный слэш в 2 местах после слова "Даниил"?
2) Возможно еще не хавает русские буквы.
Пишите так:
C++
1
Строка 6: fstream file("C:\\Users\\Daniil\\Desktop\\file.txt");
Попробуйте русские буквы("Даниил") и английские буквы("Daniil"). О результатах доложите.
1
fredopudge
1 / 1 / 0
Регистрация: 05.03.2016
Сообщений: 49
05.10.2016, 06:12  [ТС] 3
Дак это ж путь к файлу, он такой и есть. Я открыл этот файл в студии, нажал правой кнопкой и скопировал полный путь к файлу. Я попробовал конечно, но не помогло.

Просто именно эта программа работала неделю назад. Я вчера винду переустановил, студию заново скачал, может быть в этом проблема?)
0
meJevin
158 / 150 / 92
Регистрация: 18.11.2015
Сообщений: 677
Завершенные тесты: 1
05.10.2016, 06:17 4
Что должны делать строки 13-16? И зачем ты в массив char пытаешь что-то считывать, когда ты сразу на экран можешь вывести каждый символ. eof() срабатывает, когда мы пытаемся читать/писать за границы файла.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
    ifstream file("file.txt");
 
    while (1)
    {
        char c;
        file.get(c); // эта функция может быть использована за пределами файла
        // поэтому после get() сразу проверяем, сработал ли eof()
        if (file.eof()) break;
        std::cout << c; 
    }
 
    file.close();
}
0
fredopudge
1 / 1 / 0
Регистрация: 05.03.2016
Сообщений: 49
05.10.2016, 06:22  [ТС] 5
Ну запись мне нужна для того, чтобы потом из этого массива записать всё в вектор, при этом вывести и массив и вектор.
Вообще я сейчас кое-что подкоррктировал, eof() заработал наконец-то, но возникла другая проблема: он выводит что-то типа МММММММММММММ, вместо того, что в файле, это что-то с кодировкой не так?
0
DemolitionMan
130 / 156 / 87
Регистрация: 06.04.2016
Сообщений: 992
05.10.2016, 06:24 6
Лучший ответ Сообщение было отмечено fredopudge как решение

Решение

Ну и вообще вот так код должен быть:
C++
1
2
3
4
5
6
7
8
9
10
11
while(!file.eof())
{
    file >> fs[size];
    size++;
}
file.close();
 
for(int i = 0; i < 15; i++)
{
    cout << fs[i];
}
1
fredopudge
1 / 1 / 0
Регистрация: 05.03.2016
Сообщений: 49
05.10.2016, 06:28  [ТС] 7
сейчас код выглядит вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
    while (!file.eof())
    {
        file >> fs[size];
        size++;
    }
 
    for (int i = 0; i < size; i++)
    {
        cout << fs[size];
    }
 
    file.close();
Добавлено через 1 минуту
всё получилось, спасибо))))
0
DemolitionMan
130 / 156 / 87
Регистрация: 06.04.2016
Сообщений: 992
05.10.2016, 06:29 8
Цитата Сообщение от fredopudge Посмотреть сообщение
Дак это ж путь к файлу, он такой и есть. Я открыл этот файл в студии, нажал правой кнопкой и скопировал полный путь к файлу. Я попробовал конечно, но не помогло.
Просто именно эта программа работала неделю назад. Я вчера винду переустановил, студию заново скачал, может быть в этом проблема?)
- не сопротивляйтесь совету, двойной обратный слэш в пути файла нужен 100-пудово(вместо 1). Русские буквы в пути файла по-ходу прокатывают.
С кодировкой да, проблемы, у меня из файла читает 1 русское слово и выводит абракадабру.
1
05.10.2016, 06:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2016, 06:29

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

ConstraintSet работает не так как ожидается в Handler
Делаю визуализацию сортировки. Сначала хочу реализовать swap. Два элемента подсвечиваются красным,...

Почему цикл работает не так, как ожидается?
Двумя способами реализовал цикл, который увеличивает годовую зарплату на 10% при нажатии 'y' до тех...

Почему malloc работает не так, как ожидается?
int main() { int* p =malloc(sizeof(int)); p=5; printf(&quot;%s\n&quot;,strerror(errno)); ...

Код работает не так, как ожидается (найти и исправить ошибки)
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; char deletika(char a, long ot, long...


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

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

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