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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
#1

Проблема с вводом-выводом из файлов - C++

19.08.2011, 18:24. Просмотров 1223. Ответов 21
Метки нет (Все метки)

Только изучаю данную тематику, и нарвался на подобное - при попытке компилить, находит одну ошибку, и начинает ругаться..
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
#include "stdafx.h"
#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
 
using namespace std ;
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    FILE *buf_in , *buf_out ;
        
        if((*buf_in = fopen("D:\Учеба\Прогр\open_file\ole.txt" , "r")) == 0 )
        {cout << "Ошибка открытия входного файла" ; return 1; }
 
        if((*buf_out = fopen("D:\Учеба\Прогр\open_file\okay.txt" , "w")) == 0 )
        { cout << "Ошибка открытия выходного файла"; return 1 ; }
        
    int dlina = 0;
    char mass[50] , mass1[50];
 
    fread (&mass , sizeof(mass) , 1 , buf_in ) ;
 
    while(mass[dlina] != ' ' )
    {
        mass1[dlina] = mass[dlina] ;
        dlina++ ;
    }
 
    *(mass1 + dlina) = "Friend" ;
 
    fclose(buf_in) ;
 
    fwrite( &mass1 , sizeof(mass1) , 1 , buf_out ) ;
 
    fclose(buf_out) ;
 
    return 0;
}
При этом в указ. папке находится файл с таким содержанием: Hi 2 all ! =)

Помогите советом, что в проге не так, а то самообучение - зло, но необходимое зло )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2011, 18:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблема с вводом-выводом из файлов (C++):

Управление вводом-выводом - C++
Помогите решить задачу. Пусть два процесса осуществляют доступ к одному и тому же файлу, но один из них читает файл, а другой...

Трабл с вводом/выводом - C++
Вот есть код: #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main(){ setlocale(0,&quot;&quot;); char a; ifstream...

Помощь с потоковым вводом-выводом. - C++
Доброго времени суток. можно ли как-нибудь создать/открыть файл для чтения и добавления с помощью ofstream ? Или только с fopen?

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

Помогите разобраться с потоковым вводом/выводом в С++ - C++
как решить эти две задачи: 24.1 Для класса Т1, имеющего два целочисленных компонентных данных а и b с частным типом доступа, должна быть...

не могу разобраться с вводом и выводом данных - C++
1. как считать из файла input считать массив (и как его правильно там записать) 2. как правильно подать на запись в файл output то, что...

21
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
19.08.2011, 18:29 #2
Цитата Сообщение от DoZZer_ Посмотреть сообщение
if((*buf_in = fopen("D:\Учеба\Прогр\open_file\ole.txt" , "r")) == 0 )
Цитата Сообщение от DoZZer_ Посмотреть сообщение
if((*buf_out = fopen("D:\Учеба\Прогр\open_file\okay.txt" , "w")) == 0 )
Зачем указатель разыменовываете?
1
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
19.08.2011, 18:42  [ТС] #3
Да уж, с этим начудил ) Другой вопрос - как таким образом создать новый файл с надписью "Привет", которую берем из первого текстовика (до первого пробела) и добавить в конце, к примеру, строку ", Друг" ? Код покамест такой
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
#include "stdafx.h"
#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
 
using namespace std ;
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
        FILE *buf_in , *buf_out ;
                
                if((buf_in = fopen("D:\Учеба\Прогр\open_file\ole.txt" , "r")) == 0 )
                {cout << "Ошибка открытия входного файла" ; return 1; }
 
                if((buf_out = fopen("D:\Учеба\Прогр\open_file\okay.txt" , "w")) == 0 )
                { cout << "Ошибка открытия выходного файла"; return 1 ; }
                
        int dlina = 0;
        char mass[50] , mass1[50];
 
        fread (&mass , sizeof(mass) , 1 , buf_in ) ;
 
        while(mass[dlina] != ' ' )
        {
                mass1[dlina] = mass[dlina] ;
                dlina++ ;
        }
 
  
 
        fclose(buf_in) ;
 
        fwrite( &mass1 , sizeof(mass1) , 1 , buf_out ) ;
 
        fclose(buf_out) ;
 
        return 0;
}
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
19.08.2011, 20:48 #4
Цитата Сообщение от DoZZer_ Посмотреть сообщение
Да уж, с этим начудил ) Другой вопрос - как таким образом создать новый файл с надписью "Привет", которую берем из первого текстовика (до первого пробела) и добавить в конце, к примеру, строку ", Друг" ?
Используйте другие функции:
fgets(), fscanf(), fputs(), fprintf() и т.д. для этого случая, если вы уж функции языка Си используете
0
-=ЮрА=-
Заблокирован
Автор FAQ
19.08.2011, 20:57 #5
Цитата Сообщение от DoZZer_ Посмотреть сообщение
ругой вопрос - как таким образом создать новый файл с надписью "Привет", которую берем из первого текстовика (до первого пробела) и добавить в конце, к примеру, строку ", Друг" ?
- выложи свои текстовики D:\Учеба\Прогр\open_file\ole.txt и D:\Учеба\Прогр\open_file\okay.txt
А так же поясни задание - я понял так:
В первом фале содержится текст, нам нужно 1-е слово из 1-го файла(как понимаю - это "Привет"), и это слово будет именем 2-го текстовика, в который мы должны перенести текст из 1-го и дописать в конце слово "Друг"???
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
19.08.2011, 20:59 #6
Задача очень проста и нам лучше подсказать и направить на верный путь, а не делать все самим, человек понять должен, тем более он хочет понять
0
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
19.08.2011, 21:04  [ТС] #7
Olga_, вы несомненно правы ) Пример создал из головы, интересна работа с потоками ввода-вывода, с файлами работа вообще не заладилась, учебник уже выносит мозг )


-=ЮрА=-, эти текстовики уже находятся в данной директории, а содержание их - "Hi 2 all ! =)" (или любая другая запись) в ole.txt и чистый текстовик okay.txt .
0
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
19.08.2011, 21:08  [ТС] #8
Вот текстовик ole.txt
0
Вложения
Тип файла: txt ole.txt (13 байт, 12 просмотров)
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
19.08.2011, 21:09 #9
так можно считать очередное слово из файла f (разделенное символами ' ', '\t', '\n'):
C
1
2
char s[500];
fscanf(f, "%s", s);
А так это слово записать в другой файл g:
C
1
fprintf(g, "%s", s);
1
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
19.08.2011, 21:57  [ТС] #10
Olga_, а какие функции из С++ идентичны данным? Ведь, насколько я понимаю, это форматированный ввод, а хотелось бы посмотреть на потоки.. Планирую работать не со словами, а со строками. Прошу помощи
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
19.08.2011, 22:00 #11
Цитата Сообщение от DoZZer_ Посмотреть сообщение
Olga_, а какие функции из С++ идентичны данным?
cout, cin,
getline()
1
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
19.08.2011, 22:02 #12
Цитата Сообщение от Olga_ Посмотреть сообщение
cout, cin
Это не функции
1
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
19.08.2011, 22:03 #13
Цитата Сообщение от asics Посмотреть сообщение
Это не функции
Это понятно и ежику Имелось ввиду если перенаправить поток.

<<, >>
1
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
20.08.2011, 00:04  [ТС] #14
cin >>
cout << - как потоки используются только с клавиатурой (для вывода строки) или как-то еще?

З.Ы.: Когда наши ежики научатся программировать на C, я пойду собирать яблоки с грибами и бегать на четвереньках по лесу )))
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
20.08.2011, 07:37 #15
Цитата Сообщение от DoZZer_ Посмотреть сообщение
cin >>
cout << - как потоки используются только с клавиатурой (для вывода строки) или как-то еще?
Не только с клавиатурой эти потоки связаны. Можно перенаправить поток. Например, вы хотите в файл a.txt записать слово "Hello world". Тогда

C++
1
2
freopen("a.txt", "w", stdout);
cout << "Hello world";
Также можно перенправить входной поток. Например, вы хотите из текстового файла b.txt считать цело число. Тогда

C++
1
2
3
int x;
freopen("b.txt", "r", stdin);
cin >> x;
1
20.08.2011, 07:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2011, 07:37
Привет! Вот еще темы с ответами:

Операции с матрицой и работа с вводом-выводом в файл - C++
Здравствуйте. Дали несколько заданий на практике, одно из них следующее: Начиная с центра, обойти по спирали все элементы квадратной...

Значения флагов-манипуляторов управления вводом/выводом. - C++
Почему отличаются значения флагов-манипуляторов управления вводом/выводом, которые нахожу в инете, от тех значений, которые применяются в...

Обработка одномерных массивов с файловым вводом выводом - C++
дан массив размера N и целые числа K и L (1&lt;=K&lt;=L&lt;=N). Найти сумму элементов массива с номерами от K до L включительно. фишка в том чтобы...

Заменить консольный ввод-вывод файловым вводом выводом - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; struct Address { string Index; string Country; string...


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

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

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