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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
19.08.2011, 18:24     Проблема с вводом-выводом из файлов #1
Только изучаю данную тематику, и нарвался на подобное - при попытке компилить, находит одну ошибку, и начинает ругаться..
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 ! =)

Помогите советом, что в проге не так, а то самообучение - зло, но необходимое зло )
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 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 )
Зачем указатель разыменовываете?
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;
}
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
19.08.2011, 20:48     Проблема с вводом-выводом из файлов #4
Цитата Сообщение от DoZZer_ Посмотреть сообщение
Да уж, с этим начудил ) Другой вопрос - как таким образом создать новый файл с надписью "Привет", которую берем из первого текстовика (до первого пробела) и добавить в конце, к примеру, строку ", Друг" ?
Используйте другие функции:
fgets(), fscanf(), fputs(), fprintf() и т.д. для этого случая, если вы уж функции языка Си используете
-=ЮрА=-
Заблокирован
Автор FAQ
19.08.2011, 20:57     Проблема с вводом-выводом из файлов #5
Цитата Сообщение от DoZZer_ Посмотреть сообщение
ругой вопрос - как таким образом создать новый файл с надписью "Привет", которую берем из первого текстовика (до первого пробела) и добавить в конце, к примеру, строку ", Друг" ?
- выложи свои текстовики D:\Учеба\Прогр\open_file\ole.txt и D:\Учеба\Прогр\open_file\okay.txt
А так же поясни задание - я понял так:
В первом фале содержится текст, нам нужно 1-е слово из 1-го файла(как понимаю - это "Привет"), и это слово будет именем 2-го текстовика, в который мы должны перенести текст из 1-го и дописать в конце слово "Друг"???
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
19.08.2011, 20:59     Проблема с вводом-выводом из файлов #6
Задача очень проста и нам лучше подсказать и направить на верный путь, а не делать все самим, человек понять должен, тем более он хочет понять
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
19.08.2011, 21:04  [ТС]     Проблема с вводом-выводом из файлов #7
Olga_, вы несомненно правы ) Пример создал из головы, интересна работа с потоками ввода-вывода, с файлами работа вообще не заладилась, учебник уже выносит мозг )


-=ЮрА=-, эти текстовики уже находятся в данной директории, а содержание их - "Hi 2 all ! =)" (или любая другая запись) в ole.txt и чистый текстовик okay.txt .
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
19.08.2011, 21:08  [ТС]     Проблема с вводом-выводом из файлов #8
Вот текстовик ole.txt
Вложения
Тип файла: txt ole.txt (13 байт, 12 просмотров)
Olga_
 Аватар для Olga_
840 / 182 / 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);
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
19.08.2011, 21:57  [ТС]     Проблема с вводом-выводом из файлов #10
Olga_, а какие функции из С++ идентичны данным? Ведь, насколько я понимаю, это форматированный ввод, а хотелось бы посмотреть на потоки.. Планирую работать не со словами, а со строками. Прошу помощи
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
19.08.2011, 22:00     Проблема с вводом-выводом из файлов #11
Цитата Сообщение от DoZZer_ Посмотреть сообщение
Olga_, а какие функции из С++ идентичны данным?
cout, cin,
getline()
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
19.08.2011, 22:02     Проблема с вводом-выводом из файлов #12
Цитата Сообщение от Olga_ Посмотреть сообщение
cout, cin
Это не функции
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
19.08.2011, 22:03     Проблема с вводом-выводом из файлов #13
Цитата Сообщение от asics Посмотреть сообщение
Это не функции
Это понятно и ежику Имелось ввиду если перенаправить поток.

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

З.Ы.: Когда наши ежики научатся программировать на C, я пойду собирать яблоки с грибами и бегать на четвереньках по лесу )))
Olga_
 Аватар для Olga_
840 / 182 / 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;
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
20.08.2011, 23:25  [ТС]     Проблема с вводом-выводом из файлов #16
Огромное спасибо за ответы )
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
21.08.2011, 07:19     Проблема с вводом-выводом из файлов #17

Не по теме:

Хм... почему никого не смутила эта строка?


Цитата Сообщение от DoZZer_ Посмотреть сообщение
"D:\Учеба\Прогр\open_file\ole.txt"
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
21.08.2011, 12:15  [ТС]     Проблема с вводом-выводом из файлов #18
kazak, а чем она должна смущать? Русские символы?
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
21.08.2011, 12:21     Проблема с вводом-выводом из файлов #19
DoZZer_, русские символы это второе. Главное — это одинарные обратные слэши.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2011, 12:25     Проблема с вводом-выводом из файлов
Еще ссылки по теме:

Обработка одномерных массивов с файловым вводом выводом C++
У кого нибудь есть приложение Win32 на c++! Примеры программ, с вводом и выводом данных! чтобы нагляднее было! C++
C++ Трабл с вводом/выводом

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

Или воспользуйтесь поиском по форуму:
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
21.08.2011, 12:25     Проблема с вводом-выводом из файлов #20
Обратная косая - специальный символ в С\С++ для обозначения так называемых эскейп (управляющих) последовательностей (\n, \t, \0, \", и т.д.). Для обозначения обратной косой именно как символа в тексте используется две черты \\
Yandex
Объявления
21.08.2011, 12:25     Проблема с вводом-выводом из файлов
Ответ Создать тему
Опции темы

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