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

Работа с текстовыми и бинарными файлами - C++

Восстановить пароль Регистрация
 
Hellga100
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 14
30.03.2011, 16:09     Работа с текстовыми и бинарными файлами #1
Дан файл вещественных чисел. Заменить в нем все элементы на их квадраты.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
31.03.2011, 07:02     Работа с текстовыми и бинарными файлами #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<fstream>
#include<iterator>
#include<vector>
#include<algorithm>
 
int main(){
    std::fstream fs("1.txt");
    if(!fs){std::cerr<<"Error reading file\n"; return 1;}
    std::vector<float> v((std::istream_iterator<float>(fs)), std::istream_iterator<float>());
    fs.clear();
    fs.seekp(std::ios::beg);
    std::for_each(v.begin(), v.end(), [&](float x){fs<<x*x<<'\n';});
    fs.close();
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
31.03.2011, 08:19     Работа с текстовыми и бинарными файлами #3
igorrr37, а твой пример коректно работает, насколько я понял, запись у тебя происходит сразу после чтения очередного значения?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
31.03.2011, 10:10     Работа с текстовыми и бинарными файлами #4
нет, там сперва всё читает(10), потом курсор - в начало файла(12), и пишет(13).
vinternete
2 / 3 / 1
Регистрация: 02.11.2010
Сообщений: 129
08.07.2011, 16:50     Работа с текстовыми и бинарными файлами #5
а как это написать на Си?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
08.07.2011, 19:24     Работа с текстовыми и бинарными файлами #6
У меня только таким образом компилится и работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<fstream>
#include<iterator>
#include<vector>
#include<algorithm>
 
    std::fstream fs;
    float ff (float x) {fs<<x*x<<'\n';}
 
int main(){
 
    fs.open("1.txt");
    if(!fs){std::cerr<<"Error reading file\n"; return 1;}
    std::vector<float> v((std::istream_iterator<float>(fs)), std::istream_iterator<float>());
 
    fs.clear();
    fs.seekp(std::ios::beg);
    std::for_each(v.begin(), v.end(), ff);
    fs.close();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2011, 21:48     Работа с текстовыми и бинарными файлами
Еще ссылки по теме:

C++ Работа с бинарными файлами (программка дважды записывает последнее число)
Visual c++. Работа с бинарными файлами и структурами C++
Работа с бинарными файлами и структурами C++

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

Или воспользуйтесь поиском по форуму:
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
08.07.2011, 21:48     Работа с текстовыми и бинарными файлами #7
Цитата Сообщение от vinternete Посмотреть сообщение
а как это написать на Си?
Вот на С
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
#include <stdio.h>
 
 
int main(void) {
 
   float  arr[] = { 3.14f, 0.9f, 5.5f, 50.5f, 4.4f, 2.1f, 5.1f };
   float  fget = 0.0f;
   int     inx = 0;
 
   FILE*  fp  = fopen("float.dat", "wb");   // создадим bin-файл запишем в него массив вещ-чисел
   fwrite((const void*)arr, sizeof(arr), 1u, fp);
   fflush(fp);     
 
   inx  = 0;
   fp   = freopen("float.dat", "rb+", fp);  // переоткрываем его
   while(fread((void*)&fget, sizeof(float), 1u, fp) != 0)
        arr[inx++] = fget;
 
   for(inx = 0; inx < sizeof(arr) / sizeof(float); inx++) // возводим в квадраты
       arr[inx] *= arr[inx];
   rewind(fp);
   fwrite((const void*)arr, sizeof(arr), 1u, fp);   // перезаписываем файл
   fflush(fp);
   fclose(fp);
 
 
 
   // вот открываем его чтобы вывести в консоль
   fp  = fopen("float.dat", "rb");
   while(fread((void*)&fget, sizeof(float), 1u, fp) != 0)
        printf("float = %f\n", fget);
   fclose(fp);
 
   getchar();
   return 0;
}
Yandex
Объявления
08.07.2011, 21:48     Работа с текстовыми и бинарными файлами
Ответ Создать тему
Опции темы

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