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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
vlad_ltd
3 / 3 / 0
Регистрация: 30.04.2011
Сообщений: 51
#1

Тема потоки данных - C++

30.04.2011, 03:14. Просмотров 1683. Ответов 6
Метки нет (Все метки)

Задача: Создается файл путем ввода имени файла с клавиатуры, хочу с помощью функции get() и цикла do while ввести текст, который выведется точно так же на монитор и запишется в файл.
Ниже приведен код, который просто отображает введеную строку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
 
using namespace std;
 
int main()
{
    setlocale(0,"");
    char c;
    cout<<"Введите строку\n";
    do
    {
        cin.get(c);
        cout<<c;
    }while (c!= '\n');
    cout<<"Это все\n";
    system("pause");
    return 0;
}
А этот же кусок в задаче ниже не работает, такое ощущение что цикл do...while просто игнорируется
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
#include<iostream>
#include<fstream>
#include<cstdlib>
 
using namespace std;
 
int main()
{
    setlocale(0,"");
    ofstream fo;
    char file_name[16];
    char c;
 
    cout<<"Введите имя файла в формате ********.***\n";
    cin>>file_name;
 
    fo.open(file_name,ios::app);
    if (fo.fail())
    {
        cout<<"Файл не создан\n";
        exit(1);
    }
    cout<<"Введите текст:\n";
    do
    {
        cin.get(c);
        cout<<c;
        fo<<с;
    }while (c!= '\n');
    fo<<"Какой то текст бла бла \n";
    fo.close();
 
    system("pause");
    return 0;
}
Вопрос: почему не работает, что нужно сделать чтобы заработало именно через get()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2011, 03:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Тема потоки данных (C++):

Потоки данных - C++
Все наверно знают, что стандартные потоки (cout, cin, cerr, clog) ввода и вывода можно перенаправлять в файлы. Зачем тогда нужны классы...

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

Файловые потоки данных - C++
Помогите, пожалуйста! Надо написать программу, которая считывает из файла строки и сохраняет их в другой файл в обратном порядке. Я...

Потоки. Ввод данных. - C++
Если согласится на ввод второго человека, пропускается ввод его имени... вроде ввод все правильно, не знаю в чем беда :wall: ...

COM порт, потоки, и таймер. Считывание данных - C++
всем привет, такая задача. Нужно считывать данные с ком порта, сразу после того как я открыл ком порт. начал с этой темы. ...

Что такое потоки ввода, потоки вывода? - C++
Здарова всем! Не так давно уже прогаю на С++ и все НИКАК не могу понять, что такое потоки ввода, потоки вывода..! вот допустим...

6
archinko
14 / 14 / 2
Регистрация: 02.03.2010
Сообщений: 29
30.04.2011, 11:39 #2
Ололо, аффтар жжет.
в строке
C++
1
fo<<с;
Вместо символа с(ЭС русская) нужно поставить с(СИ английская).
0
vlad_ltd
3 / 3 / 0
Регистрация: 30.04.2011
Сообщений: 51
30.04.2011, 21:25  [ТС] #3
Я эту строку набрал уже на форуме, это не суть дела, проблема заключалась в том, что выполняя действие по шагам, цикл do while игнорировался, ничего не выводя, хотя по идее один раз он должен был что то выдать.
В любом случае, я понял где был подвох, так что тема более не актуальна.

PS так как на правку дается только 10 минут после создания сообщения, букву 'c' я не успел поправить, а создавать новый пост, из за не меняющего сути дела исправления не стал. Ошибки которые выдает дебагер я читать умею, тут была логическая ошибка, которую я и просил помочь обнаружить.
0
archinko
14 / 14 / 2
Регистрация: 02.03.2010
Сообщений: 29
30.04.2011, 23:52 #4
Логическая ошибка О_о. Я все прекрасно скомпилил и запустил (gcc). И в чем же был подвох?
0
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
01.05.2011, 03:24 #5
После чтения file_name в буфере остался символ перевода строки '\n', который и был впоследствии обработан в цикле.
vlad_ltd, кстати для проверки открылся файл или нет существует специальная функция is_open(), у fail() несколько другое назначение.
1
vlad_ltd
3 / 3 / 0
Регистрация: 30.04.2011
Сообщений: 51
01.05.2011, 04:14  [ТС] #6
Цитата Сообщение от kazak Посмотреть сообщение
vlad_ltd, кстати для проверки открылся файл или нет существует специальная функция is_open(), у fail() несколько другое назначение.
Спасибо, так как учусь по книжке, пока другие варианты были не известны.

Цитата Сообщение от archinko Посмотреть сообщение
Логическая ошибка О_о. Я все прекрасно скомпилил и запустил (gcc). И в чем же был подвох?
В том то и "прелесть" логической ошибки, что ни один компилятор не поможет в ее решении.
0
archinko
14 / 14 / 2
Регистрация: 02.03.2010
Сообщений: 29
01.05.2011, 07:26 #7
Дело в том, что я не просто скопилировал программу, а и запустил(как уже писал выше). Цыкл у меня работал, ни какой конец строки не попадал в него, до того как я сам его ни ввиду. Это скорее проблема виндовозных особеностей компиляции.
0
01.05.2011, 07:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2011, 07:26
Привет! Вот еще темы с ответами:

Посоветуйте как лучше найти выход из положения (тема: легкая база данных) - C++
Короче мучаюсь второй день, так как я пишу не черта не выходит, что лучше использовать, какие техники применить, сделать нужно быстро,...

Является ли консоль носителем данных, то есть файлом, если потоки выводят информацию именно в ней? - C++
Система ввода-вывода С++ основана на работе с потоками. Потоки в свою очередь являются абстрактными объектами с логическим интерфейсом и...

Потоки - C++
Всем привет! Делаю тут одну программу(консольную игру), возникла надабность запустить одну и туже функцию в паралельных потоках, т. е....

Потоки - C++
Есть такой файл: Andriy aa 1 2 3 Petro dd 1 1 1 Vasa rdg 5 5 88 Ivan n 5 5 5 И нужно определить такое имя, у которого есть...


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

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

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