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

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

Войти
Регистрация
Восстановить пароль
 
SergeyM
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 13
#1

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

10.04.2011, 17:38. Просмотров 534. Ответов 9
Метки нет (Все метки)

Задан файл input.txt с числовой информацией. Как можно прочитать его содержимое случайным образом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2011, 17:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Случайное чтение из файла (C++):

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

Чтение из файла. Повторное чтение файла - C++
Добрый день. Необходимо реализовать в программе функцию повторного чтения данных из файла, в случае некорректного ввода их в оный. Вот...

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include<iostream> #include<fstream> #include<locale.h> #include<iomanip> #include <cstdlib> using namespace std; struct...

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла? - C++
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

Чтение файла с несколькими знаками конца файла - C++
В файле несколько раз встречается ноль, и ни как не получается прочитать его полностью. Как можно решить данную проблему ?

9
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
10.04.2011, 18:05 #2
Цитата Сообщение от SergeyM Посмотреть сообщение
Как можно прочитать его содержимое случайным образом?
Как Вы себе это представляете?
0
SergeyM
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 13
10.04.2011, 18:19  [ТС] #3
Если бы представлял, то не спрашивал бы
0
Vladimir.
158 / 158 / 10
Регистрация: 24.11.2009
Сообщений: 375
11.04.2011, 11:54 #4
как вариант - fseekg() со случайным смещением.
0
easybudda
Модератор
Эксперт CЭксперт С++
9699 / 5649 / 964
Регистрация: 25.07.2009
Сообщений: 10,872
11.04.2011, 12:22 #5
Vladimir., это с бинарным файлом сработает. В текстовом пальцем в небо попадёте.
0
Vladimir.
158 / 158 / 10
Регистрация: 24.11.2009
Сообщений: 375
11.04.2011, 15:41 #6
Vladimir., это с бинарным файлом сработает. В текстовом пальцем в небо попадёте.
протестировал - у меня с текстовыми работает. Возможно, есть нюансы, но мне об этом не известно.
0
easybudda
Модератор
Эксперт CЭксперт С++
9699 / 5649 / 964
Регистрация: 25.07.2009
Сообщений: 10,872
11.04.2011, 16:43 #7
Цитата Сообщение от Vladimir. Посмотреть сообщение
протестировал - у меня с текстовыми работает.
Попробуйте в текстовый файл всего два числа записать, но подлиннее, например
12345
54321
посмотрите, что будет... Ну и код выложите - вдруг и в правду работает....
0
IrineK
Заблокирован
11.04.2011, 21:33 #8
Ну вот и будет - "Случайное чтение из файла".
Даже больше - непредсказуемое ).
1
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 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
0
easybudda
Модератор
Эксперт CЭксперт С++
9699 / 5649 / 964
Регистрация: 25.07.2009
Сообщений: 10,872
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
$
1
12.04.2011, 08:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2011, 08:45
Привет! Вот еще темы с ответами:

Чтение из файла - C++
Доброго времени суток! Предстоит такая задача, дан файл, в котором записана дата и курс валюты (через пробел) в следующем виде: ...

Чтение из файла - C++
Подскажите как из txt файла в нутри которого 0x004FE6A4 считать это значение в переменную DWORD? Добавлено через 6 минут Ну то есть...

Чтение из файла - C++
Помогите разобраться! Вопрос такой - как читать файл. Я новичок в программировании, прошу сильно не бить. Вот что надумал: #include...

Чтение из файла - C++
задание: помогите с 3 заданием!!! как можно сделать что бы программа считывала файл auto.txt и распределяла данные по классам, ...


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

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

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