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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
vlad_ltd
3 / 3 / 0
Регистрация: 30.04.2011
Сообщений: 51
30.04.2011, 03:14     Тема потоки данных #1
Задача: Создается файл путем ввода имени файла с клавиатуры, хочу с помощью функции 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()
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2011, 03:14     Тема потоки данных
Посмотрите здесь:

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

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

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

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

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

Или воспользуйтесь поиском по форуму:
archinko
13 / 13 / 2
Регистрация: 02.03.2010
Сообщений: 29
01.05.2011, 07:26     Тема потоки данных #7
Дело в том, что я не просто скопилировал программу, а и запустил(как уже писал выше). Цыкл у меня работал, ни какой конец строки не попадал в него, до того как я сам его ни ввиду. Это скорее проблема виндовозных особеностей компиляции.
Yandex
Объявления
01.05.2011, 07:26     Тема потоки данных
Ответ Создать тему
Опции темы

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