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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.82
Daedro
0 / 0 / 0
Регистрация: 18.06.2012
Сообщений: 9
#1

Функции ifstream , ofstream. Исправить - C++

25.06.2012, 03:12. Просмотров 3700. Ответов 12
Метки нет (Все метки)

Помогите исправить код пжлст, не работает прога(
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <fstream>
#include <Windows.h>
using namespace std;
 
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int i;
char *a=new char[255],*b=new char[255],c;
ifstream f1("f.txt" , ios::in);
ofstream f2("g.txt" , ios::out);
ofstream f3("f.txt" , ios::out|ios::trunc);
while (!f1.eof())
{
f1.getline(a, strlen(a));
cout<<a;
}
cout<<"Введенная строка:"<<endl;
for(i=0;i<strlen(a);i++)
{
cout<<a[i];
}
cout<<endl<<endl<<"Хотите ввести другую строку? (введите 'y', если да) ";
cin>>c;
if (c=='y')
{
cout<<"Введите строку:"<<endl<<endl;
cin.ignore(256,'\c');
cin.getline( a, strlen(a));
OemToChar(a,a);
f3<<a;
}
cout<<"Нажмите любую хнопку=)"<<endl;
getch();
cout<<"Обратная строка:"<<endl;
for (int j = 0 , i = strlen(a)-1 ; j < strlen(a) , i >= 0 ; j++ , i-- )
{
    b[j]=a[i];
    cout<<a[i];
}
f2<<b;
cout<<endl;
f1.close();
f2.close();
f3.close();
cout<<endl<<"Данные успешно сохранены";
getch();
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2012, 03:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции ifstream , ofstream. Исправить (C++):

ifstream ofstream - C++
как работают данные файловые операции, объясните пожалуйста куда происходит запись ена жёстком диске

C++ файлы ifstream/ofstream - C++
Доброе время суток нужна небольшая помощь с записью/считыванием из файла вообщем при считывание из файла eof() не определяет конца файла и...

ifstream/ofstream/fstream - C++
#include &lt;fstream&gt; fstream autosave; autosave.open(&quot;...autosave.txt&quot;); char x; autosave &lt;&lt; x; cout &gt;&gt;...

Перегрузка ifstream и ofstream? - C++
Есть класс //test.h cass test { private: int i; string st; public:

Работа с потоками ofstream/ifstream - C++
Добрый вечер! Помогите, пожалуйста, с задачей! Дан класс: class data { char str; //дата представлена в виде строки “mm/dd/yy” ...

Работа с кириллицей в ofstream/ifstream - C++
Как сохранять русские буквы в ofstream и выводить русские буквы в через ifstream ?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2012, 05:29 #2
Так работает, но нужно, чтобы пред первым запуском существовал файл f.txt со строкой.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <fstream>
#include <Windows.h>
using namespace std;
 
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int i;
char *a = new char[255];
char *b = new char[255];
char c;
 
ifstream f1("f.txt" , ios::in); 
ofstream f2("g.txt" , ios::out); 
 
while (!f1.eof())
{
    f1.getline(a, strlen(a));
    cout << a;
}
cout << "\nВведенная строка:" << endl;
for(i = 0; i < strlen(a); i++)
{
    cout<<a[i];
}
cout << endl << endl << "Хотите ввести другую строку? (введите 'y', если да) ";
cin >> c;
cin.get();
if (c == 'y')
{
    ofstream f3("f.txt" , ios::out|ios::trunc);
    cout << "Введите строку:" << endl << endl;
    //cin.ignore(256,'\c'); // непонятно зачем.
    cin.getline(a, strlen(a));
    OemToChar(a, a);
    f3 << a;
    f3.close();
}
cout << "Нажмите любую хнопку=)" << endl;
getch();
cout << "Обратная строка:" << endl;
int j = 0; // чтобы добавить после цикла символ окончания строки.
for (i = strlen(a)-1; j < strlen(a), i >= 0; j++, i--) // в условии продолжения цикла непонятная запятая, но и так работает.
{
    b[j] = a[i];
    cout << a[i];
}
b[j] = '\0'; // добавляем окончание строки.
f2 << b;
cout << endl;
f1.close();
f2.close();
cout << endl << "Данные успешно сохранены";
getch();
return 0;
}
2
Daedro
0 / 0 / 0
Регистрация: 18.06.2012
Сообщений: 9
25.06.2012, 07:58  [ТС] #3
существует

Добавлено через 34 минуты
+ после запуска файл f.txt становится пустой, а файл j.txt заполняется так
"НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННээээ««««««««юоюою"
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
25.06.2012, 09:16 #4
Хм, что-то я в упор не вижу j.txt файл..

Подобная строчка возникает обычно из-за того, что у тебя либо не инициализирована строка, которую ты выводишь, либо нет нуль-символа в конце, но, судя по тому, что у тебя вся строчка из HHHHHH и вначале нет первоначальной строки, то то, что ты выводишь, не инициализирована.
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2012, 17:08 #5
Цитата Сообщение от Daedro Посмотреть сообщение
существует

Добавлено через 34 минуты
+ после запуска файл f.txt становится пустой, а файл j.txt заполняется так
"НННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННээээ««««««««юоюою"
Чей код пробуешь? Мой или свой? При каком варанте выбора: "Хотите ввести другую строку? (введите 'y', если да) "? Какой длины первая строка в файле f.txt?
0
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
25.06.2012, 17:17 #6
Цитата Сообщение от Daedro Посмотреть сообщение
f1.getline(a, strlen(a));
Ребятки, что по вашему делает данная функция?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2012, 17:29 #7
В моём коде нужно исправить 38 строку. Записать так: cin.getline(a, 255); , а то другая строка обрезается по длине первой.

Добавлено через 3 минуты
Цитата Сообщение от kazak Посмотреть сообщение
Ребятки, что по вашему делает данная функция?
Тем не менее, работает. Хотя правильно так: f1.getline(a, 255);
0
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
25.06.2012, 17:31 #8
Работает по счастливому стечению обстоятельств.
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2012, 17:38 #9
Кто-нибудь может объяснить смысл запятой, в условии продолжения цикла, в строке: 47 for (i = strlen(a)-1; j < strlen(a), i >= 0; j++, i--)

Добавлено через 1 минуту
Цитата Сообщение от kazak Посмотреть сообщение
Работает по счастливому стечению обстоятельств.
Не спорю. Исправлял только то, что не давало работать.
0
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
25.06.2012, 17:40 #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Кто-нибудь может объяснить смысл запятой, в условии продолжения цикла, в строке
В условии не должно быть запятых. Если условий несколько, они должны объединяться логическими связками.
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2012, 17:45 #11
Цитата Сообщение от kazak Посмотреть сообщение
В условии не должно быть запятых. Если условий несколько, они должны объединяться логическими связками.
Почему компилятор не ругается? Почему работает? Как-то, компилятор эту запятую, всё-таки, понимает.
0
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
25.06.2012, 17:56 #12
Он не понимает, а просто берет результат последнего выражения.
1
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2012, 18:02 #13
Цитата Сообщение от kazak Посмотреть сообщение
Он не понимает, а просто берет результат последнего выражения.
Да. Сейчас почитал об операторе запятая.
Тогда строку 47 нужно записать так: for (i = strlen(a) - 1; i >= 0; j++, i--), тем более, что длина строки в a и так учитывается при инициализации i.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2012, 18:02
Привет! Вот еще темы с ответами:

Сокращенная запись ifstream и ofstream - C++
#include &lt;fstream&gt; using namespace std; int main() { fstream I(&quot;input.txt&quot;), O(&quot;output.txt&quot;, 2); что означает второй...

Работаем с потоками на C++ ofstream и ifstream - C++
Доброго времени суток! Подскажите пожалуйста, как при использовании ofstream и ifstream переставить курсор в начало файла?

class/string/ifstream/ofstream - C++
Доброе время суток всем!! Люди я уперся в стену и буду признателен за помощь date.h #pragma once #include &lt;iostream&gt; #include...

ifstream, ofstream и объекты класса - C++
Доброго времени суток, помогите пожалуйста разобраться. Есть некий класс: class Tr { public: Tr(){} ~Tr(){} private:


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

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

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