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

Случайное чтение из файла - C++

Восстановить пароль Регистрация
 
SergeyM
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 13
10.04.2011, 17:38     Случайное чтение из файла #1
Задан файл input.txt с числовой информацией. Как можно прочитать его содержимое случайным образом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2011, 17:38     Случайное чтение из файла
Посмотрите здесь:

Чтение из файла C++
C++ Чтение из файла.
чтение из файла C++
C++ чтение из файла
Чтение файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
10.04.2011, 18:05     Случайное чтение из файла #2
Цитата Сообщение от SergeyM Посмотреть сообщение
Как можно прочитать его содержимое случайным образом?
Как Вы себе это представляете?
SergeyM
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 13
10.04.2011, 18:19  [ТС]     Случайное чтение из файла #3
Если бы представлял, то не спрашивал бы
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
11.04.2011, 11:54     Случайное чтение из файла #4
как вариант - fseekg() со случайным смещением.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
11.04.2011, 12:22     Случайное чтение из файла #5
Vladimir., это с бинарным файлом сработает. В текстовом пальцем в небо попадёте.
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
11.04.2011, 15:41     Случайное чтение из файла #6
Vladimir., это с бинарным файлом сработает. В текстовом пальцем в небо попадёте.
протестировал - у меня с текстовыми работает. Возможно, есть нюансы, но мне об этом не известно.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
11.04.2011, 16:43     Случайное чтение из файла #7
Цитата Сообщение от Vladimir. Посмотреть сообщение
протестировал - у меня с текстовыми работает.
Попробуйте в текстовый файл всего два числа записать, но подлиннее, например
12345
54321
посмотрите, что будет... Ну и код выложите - вдруг и в правду работает....
IrineK
Заблокирован
11.04.2011, 21:33     Случайное чтение из файла #8
Ну вот и будет - "Случайное чтение из файла".
Даже больше - непредсказуемое ).
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
12.04.2011, 01:46     Случайное чтение из файла #9
мейби так?
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
#include<iostream>
#include<fstream>
#include<ctime>
#include<cctype>
#include<cstdlib>
 
int main(){
    std::ifstream ifs("1.txt", std::ios::binary);
    if(!ifs){std::cerr<<"File not found\n"; return 1;}
    ifs.seekg(0, std::ios::end);
    int fileSize=ifs.tellg(), randNum;
    //std::cout<<"fileSize= "<<fileSize<<"\n";
    srand(time(NULL));
    ifs.seekg(rand()%fileSize);
    //std::cout<<"randPos= "<<ifs.tellg()<<"\n";
    while(!(isspace(ifs.peek())||ifs.tellg()==0)){
        ifs.seekg(-1, std::ios::cur);
        //std::cout<<"tellg()= "<<ifs.tellg()<<"\n";
    }
    ifs>>randNum;
    std::cout<<"randNum= "<<randNum<<"\n";
    ifs.close();
    return 0;
}
насколько я понял бинарный режим отличается от текстового только тем что начинает выводить символ 13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2011, 08:45     Случайное чтение из файла
Еще ссылки по теме:

Чтение из файла C++
C++ Чтение из файла
чтение из файла C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.04.2011, 08:45     Случайное чтение из файла #10
Цитата Сообщение от igorrr37 Посмотреть сообщение
насколько я понял бинарный режим отличается от текстового только тем что начинает выводить символ 13
Программа создаёт два файла - один бинарный, второй текстовый, и пишет в них числа от 0 до 9.
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
#include <stdio.h>
#include <stdlib.h>
 
int main(void){
    FILE * binf, * txtf;
    int i;
    
    if ( ( binf = fopen("data.bin", "wb") ) == NULL || ( txtf = fopen("data.txt", "wt") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    
    for ( i = 0; i < 10; ++i ){
        if ( fwrite(&i, sizeof(int), 1, binf) != 1 ){
            perror("fwrite");
            exit(1);
        }
        if ( fprintf(txtf, "%d ", i) < 0 ){
            perror("fprintf");
            exit(1);
        }
    }
    
    fclose(binf);
    fclose(txtf);
    
    exit(0);
}
Код
andrew@andrew-home ~/cpp/files
$ gcc -o bin_vs_txt bin_vs_txt.c

andrew@andrew-home ~/cpp/files
$ ./bin_vs_txt

andrew@andrew-home ~/cpp/files
$ cat data.txt
0 1 2 3 4 5 6 7 8 9
andrew@andrew-home ~/cpp/files
$ cat data.bin
          ♥   ♦   ♣   ♠
andrew@andrew-home ~/cpp/files
$ hexdump data.txt
0000000 2030 2031 2032 2033 2034 2035 2036 2037
0000010 2038 2039
0000014

andrew@andrew-home ~/cpp/files
$ hexdump data.bin
0000000 0000 0000 0001 0000 0002 0000 0003 0000
0000010 0004 0000 0005 0000 0006 0000 0007 0000
0000020 0008 0000 0009 0000
0000028

andrew@andrew-home ~/cpp/files
$
Yandex
Объявления
12.04.2011, 08:45     Случайное чтение из файла
Ответ Создать тему
Опции темы

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