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

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

Войти
Регистрация
Восстановить пароль
 
Nik-
20 / 20 / 9
Регистрация: 12.07.2015
Сообщений: 339
#1

Отбрасывает последнюю букву из слова после вывода из файла - C++

07.11.2015, 11:34. Просмотров 186. Ответов 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
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
    int count = 0;
    string str;
    ofstream fout;
    fout.open("BASE.bas", ios_base::app);
 
    cout << "Enter the word what you want to write it to the base: ";
    getline(cin, str);
    fout << endl;
    fout << str;
    fout.close();
    
    ifstream fprint("BASE.bas");
    while (fprint.get() != EOF) ++count;
    char *S2 = new char[count + 1];
 
    fprint.clear();
    fprint.seekg(0);//ставим курсор на нулевое значение
    fprint.get(S2, count, '\0');
    cout << S2 << endl; //Вывод переменной уже с записанным в нее текстом
            
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2015, 11:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отбрасывает последнюю букву из слова после вывода из файла (C++):

Вывести первую и последнюю букву каждого слова с файла - C++
Всем привет, помогите написать программу, которая выводит на экран Первую и последнюю букву каждого слова с файла. Я старался но сломал...

Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова - C++
Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела....

Напечатать слова, которые отличны от последнего слова текста, предварительно удалив из слова последнюю букву - C++
Дана последовательность содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами не менее...

:Вывести все слова предложения, содержащие последнюю букву предыдущего слова не менее 2 раз - C++
Делаю задание:Вывести все слова предложения, содержащие последнюю букву предыдущего слова не менее 2 раз. Начал с пере формировки...

С клавиатуры вводится многострочный текст. Распечатать слова из текста, преобразовав их следующим образом: · перенести последнюю букву в начало слова; - C++
С клавиатуры вводится многострочный текст. Распечатать слова из текста, преобразовав их следующим образом: · перенести последнюю букву...

Перенести последнюю букву слова в начало С++ - C++
Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
GbaLog-
Любитель чаепитий
2772 / 1294 / 311
Регистрация: 24.08.2014
Сообщений: 4,588
Записей в блоге: 1
Завершенные тесты: 2
07.11.2015, 12:00 #2
Nik-, Вы пробовали функцию getline?
C++
1
getline( fprint, S2 );
Не знаю, как она будет работать с указателем на char, но со строками всё хорошо работает.
Эта функция записывает во 2-й аргумент строку и переходит на следующую строку в файле.
0
Nik-
20 / 20 / 9
Регистрация: 12.07.2015
Сообщений: 339
07.11.2015, 14:53  [ТС] #3
Как буду дома-попробую и отпишу

Добавлено через 2 часа 25 минут
Нет, не так. Программа сначала записывает в файл, а потом выводит содержимое путем считывания в массив S2. Записывать сразу в массив не нужно.
0
GbaLog-
Любитель чаепитий
2772 / 1294 / 311
Регистрация: 24.08.2014
Сообщений: 4,588
Записей в блоге: 1
Завершенные тесты: 2
07.11.2015, 18:20 #4
Nik-,
C++
1
2
3
4
5
6
ifstream out( "out.txt" );
char* s = new char[count + 1];
while( !out.eof() ) {
  getline( out, s );
  cout << s;
}
Добавлено через 55 секунд
Правда не знаю, как будет на
C++
1
char* s = new char[count + 1]
реагировать эта функция, погуглите или подумайте там.
1
Nik-
20 / 20 / 9
Регистрация: 12.07.2015
Сообщений: 339
07.11.2015, 18:31  [ТС] #5
Ошибку выводит на строчке, где ввод getline производится
0
GbaLog-
Любитель чаепитий
2772 / 1294 / 311
Регистрация: 24.08.2014
Сообщений: 4,588
Записей в блоге: 1
Завершенные тесты: 2
07.11.2015, 22:36 #6
Цитата Сообщение от Nik- Посмотреть сообщение
Ошибку выводит на строчке, где ввод getline производится
погуглите или подумайте там.
Можете вместо массива S2 использовать
C++
1
string S2 = "";
0
Nik-
20 / 20 / 9
Регистрация: 12.07.2015
Сообщений: 339
08.11.2015, 15:12  [ТС] #7
Я понял, что это "отбрасование" безвредно. В файле все отображается.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2015, 15:12
Привет! Вот еще темы с ответами:

Удалить первую и последнюю букву слова - C++ - C++
Пользователь вводит массив строк, нужно удалить первую и последнюю букву каждого слова и вывести на экран.

Из каждого слова заданного текста удалить последнюю букву. - C++
Привет все, помогите с задачей: Из каждого слова заданного текста удалить последнюю букву.

Строки символов. (Переместить последнюю букву в начало слова) - C++
Прошу помощи в решении задачи. Нужно написать код к данной задаче в Visual Studio (в консольной приложении). Вот и сама задача: В...

Поменять первую и последнюю букву местами для каждого слова - C++
1. Печать ленту со следующими изменениями: поменять первую и последнюю букву местами для каждого слова; 2. Находит количество...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.11.2015, 15:12
Ответ Создать тему
Опции темы

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