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

перемещение указателя в потоке... - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
20.04.2011, 23:22     перемещение указателя в потоке... #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
#include <iostream>
#include <fstream>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
 
 const int N=20, A=5, B=13;
 int a;
 
 srand(time(0));
 
 fstream f("rezult.dat",ios::out|ios::app|ios::binary);
 if(!f) cout<<"Ошибка";
 for(int i=0;i<N;i++){ // Запись данных в файл...
 a=A+rand()%(B-A+1);
 f.write((char*)&a,sizeof(a));
 cout<<a<<" ";
 }
 
 cout<<"\n_________________________________________________\n";
 
 f.seekg(0,ios::beg);
 f.seekp(0,ios::beg);
 
 while(!f.eof()){
 f.read((char *)&a, sizeof(a));
 if(a==7){
 a=-7;
 f.write((char *)&a,sizeof(a));
 }
 cout<<a<<" "; // Финальный вывод...
 }
 
}
Добавлено через 2 часа 55 минут
хотябы скажите я правильно использую
C++
1
2
 f.seekg(0,ios::beg);
 f.seekp(0,ios::beg);
чтоб файлы читались сначало?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2011, 23:22     перемещение указателя в потоке...
Посмотрите здесь:

C++ Перезаписать память начиная с указателя Bitmap[1] элементами начиная с указателя Bitmap[0]
Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ... C++
C++ Не могу создать поток( Нужно чтобы функция запускается в потоке и работала там пока не закроем в потоке)
удаление указателя C++
C++ Копирование указателя
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.04.2011, 23:30     перемещение указателя в потоке... #2
довольно странная идея одновременно читать и писать в файл
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
20.04.2011, 23:44  [ТС]     перемещение указателя в потоке... #3
ну посоветуйте тогда пожалуйста как решить бинарным способом...если это невозможно или неправильно..даже незнаю как сказать
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.04.2011, 23:55     перемещение указателя в потоке... #4
OLLEGATOR, сперва скажите, что вы хотите
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
21.04.2011, 00:00  [ТС]     перемещение указателя в потоке... #5
надо заменить 7 на -7; используя бинарныйц метод...
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
21.04.2011, 00:02     перемещение указателя в потоке... #6
OLLEGATOR, заменить в файле? и что за бинарный метод?
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
21.04.2011, 00:02  [ТС]     перемещение указателя в потоке... #7
вообщем ладно незнаю что он хотел именно зделал так ....скажите пайдёт или нет?!

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
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>
 
using namespace std;
 
int main()
{
 
    const int N=20, A=5, B=13;
    char *s=new char [N];
    int a,i;
 
    srand(time(0));
 
    fstream f("rezult.dat",ios::out);
    if(!f) cout<<"Ошибка";
 
    cout<<"Было: \n";
    for(i=0;i<N;i++){   // Запись данных в файл...
        a=A+rand()%(B-A+1);
        f.write((char*)&a,sizeof(a));
        s[i]=a;
        cout<<a<<" ";
    }
 
    cout<<"\nСтало:\n";
 
    f.open("rezult.dat",ios::out);
 
    for(i=0;i<N;i++){
 
        a=s[i];
 
        if(a==7) a=-7;
 
        f.write((char*)&a,sizeof(a));
 
        cout<<a<<" ";
    }
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2011, 20:17     перемещение указателя в потоке...
Еще ссылки по теме:

Удаление указателя C++
C++ Перемещение указателя FILE* по файлу
C++ Сдвиг указателя

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

Или воспользуйтесь поиском по форуму:
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
23.04.2011, 20:17  [ТС]     перемещение указателя в потоке... #8
сообственно что от меня хотели
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
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <iomanip>
 
using namespace std;
 
int main()
{
 
    const int N=20,A=-1,B=9;
 
    fstream f("source",ios::out|ios::in|ios::trunc|ios::binary);
 
    if(!f) cout<<"Ошибка";
 
    srand(time(0));
 
    int a,i;
    for(i=0;i<N;i++){
        a=A+rand()%(B-A+1);
        cout<<setw(3)<<a;
        f.write((char*)&a,sizeof(a));
    }
    cout<<"\n";
 
    int n=f.tellp()/sizeof(a);
 
    for(i=0;i<n;i++){
        f.seekg(i*sizeof(a));
        f.read((char*)&a,sizeof(a));
 
        if(a==7){
            a=-7;
            f.seekp(i*sizeof(a));
            f.write((char*)&a,sizeof(a));
        }
 
        if(a==-7) cout<<"\033[41m";
        cout<<setw(3)<<a<<"\033[00m";
 
    }
 
}
Добавлено через 48 секунд
может кому пригодится
Yandex
Объявления
23.04.2011, 20:17     перемещение указателя в потоке...
Ответ Создать тему
Опции темы

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