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

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

Войти
Регистрация
Восстановить пароль
 
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
#1

Как прочитать последние 10Кб в txt файле? - C++

09.08.2010, 09:04. Просмотров 728. Ответов 11
Метки нет (Все метки)

Есть txt файл размером до 100 мб
Нужно открыть и прочитать из него последнме 10Кб текста и занести в массив
Как такое можно сделать ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2010, 09:04     Как прочитать последние 10Кб в txt файле?
Посмотрите здесь:

Как прочитать сразу два txt файла, в каждом из них находится массив строк? - C++
Потом нужно будет объединить два массива в один.

Как прочитать несколько байтов в файле с n-го байта по m-й байт ? - C++
Как прочитать несколько байтов в файле с n-го байта по m-й байт ?

Как найти нужную строку в txt файле? - C++
Как найти нужную строку в txt файле из программы на C++. С помощью fstream. Заранее спасибо!

Как выполнять команды, записанные в другом файле (к примеру в txt)? - C++
В общем задача такая, нужно выполнить команду записанную в другом файле. К примеру, при выполнении программы необходимо выполнить команду...

Из файла .txt записать в этот массив символы, так же как они записаны в файле - C++
Данн массив слов. Нужно из файла .txt записать в этот массив символы, так же как они записаны в файле Пример файла: abc def ...

Прочитать каждую нечетную и четную строку в файле - C++
На вход идет файл, в котором каждая четная строка является размером пакета, а в нечетной идет название пакета. Прим.: Abcdfe 23.5 Kb...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
09.08.2010, 09:09     Как прочитать последние 10Кб в txt файле? #2
fseek(); \\C
ifstream::seekg()\\C++
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
09.08.2010, 09:12  [ТС]     Как прочитать последние 10Кб в txt файле? #3
спасибо за ответ!
А где тут обозначено что читаеться именно 10Кб ?
мне только для с++ интересно
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
09.08.2010, 09:17     Как прочитать последние 10Кб в txt файле? #4
nill, http://www.cplusplus.com/reference/i...istream/seekg/
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
09.08.2010, 09:19  [ТС]     Как прочитать последние 10Кб в txt файле? #5
Demihalf,
про 10кб там ничего нет
мне важно не просто просичать файл а прочитать только последние 10кб
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
09.08.2010, 09:19     Как прочитать последние 10Кб в txt файле? #6
Допустим
C++
1
2
3
4
ifstream file_in;
file_in.open(...);
file_in.seekg(10240, ios::end);
\\ далее читаем файл
Евгений М.
1035 / 976 / 54
Регистрация: 28.02.2010
Сообщений: 2,824
Завершенные тесты: 2
09.08.2010, 09:20     Как прочитать последние 10Кб в txt файле? #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
#include <stdio.h>
 
int main()
{
    FILE* fp;
    int position;
    char str[10241];
    
    fp=fopen("input.txt", "r");
    
    if (fp==NULL)
    {
        printf ("Couldn't open file\n");
        return 0;
    }
    
    fseek(fp, 0, SEEK_END);
    position=ftell(fp)-10240;
    
    if (position<0)
    {
        printf ("File is too small\n");
        fclose(fp);
        return 0;
    }
    
    fseek(fp, position, SEEK_SET);
    fread(str, 1, 10240, fp);
    
    str[10240]='\0';
    
    puts(str);
    
    fclose(fp);
    
    return 0;
}
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
09.08.2010, 09:28     Как прочитать последние 10Кб в txt файле? #8
Цитата Сообщение от nill Посмотреть сообщение
про 10кб там ничего нет
А вам нужно, чтобы в C++ была функция, которая бы специально для вас читала последние 10 кб файла?..
Вот kazak вам написал, как пользоваться. А могли бы и сами почитать, что написано по ссылке.
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
09.08.2010, 18:16     Как прочитать последние 10Кб в txt файле? #9
ftell() вроде как long выдает

Есть еще другой момент - если просто перейти на конец_файла - 10Kb,
то очень высокая вероятность попасть в середину строку.
Если это так и нужно тогда ничего не делаем.
А если нужно с начала строки, то следует например промотать до начала следующей строки.

Добавлено через 45 секунд
Евгений М., а еще программа будет неправильно работать если размер файлы меньше 10Kb


Добавлено через 49 секунд
Ну еще неплохо проверять что вызовы функций успешно сработали - fseek(), fread() и прочие
Евгений М.
1035 / 976 / 54
Регистрация: 28.02.2010
Сообщений: 2,824
Завершенные тесты: 2
09.08.2010, 18:48     Как прочитать последние 10Кб в txt файле? #10
Цитата Сообщение от odip Посмотреть сообщение
Евгений М., а еще программа будет неправильно работать если размер файлы меньше 10Kb
Почему?

Цитата Сообщение от odip Посмотреть сообщение
Ну еще неплохо проверять что вызовы функций успешно сработали - fseek(), fread() и прочие
Ну... ТС сам исправит если нужно.
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
09.08.2010, 19:25     Как прочитать последние 10Кб в txt файле? #11
А нет - скажет "File is too small"
Возможно требуется вывести весь файл если размер небольшой
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2010, 20:41     Как прочитать последние 10Кб в txt файле?
Еще ссылки по теме:

Прочитать в файле каждую строку в обратном порядке - C++
Прочитать в файле каждую строку в обратном порядке!

Задача : сохранить несколько чисел в файле и потом их прочитать - C++
Задача : сохранить несколько чисел в файле (ну детский сад!) и потом их прочитать... Грабли начинаются с записи. Хотим писать в двоичном...

Поиск в txt файле - C++
Есть программа Телефонная книга. Программа со структурой. Информация сохраняется в txt и считавыется оттуда же. Присутствуют функции поиска...

Возможен ли поиск в txt-файле? - C++
доброе время суток, сам я не програмер. Но решил облегчить себе жизнь :) и так ближе к делу создал програмку (с гуглом :) ) которая...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
09.08.2010, 20:41     Как прочитать последние 10Кб в txt файле? #12
Цитата Сообщение от Евгений М. Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main()
{
...
    fseek(fp, 0, SEEK_END);
    position=ftell(fp)-10240;
    
    if (position<0)
    {
        printf ("File is too small\n");
        fclose(fp);
        return 0;
    }
...
}
можно было бы написать
C
1
2
3
...
if ( fseek(fp, -10240, SEEK_END) )
  /* файл короче, чем нужно. выругаться и закрыться */
Но на самом деле есть другой подводный камень - символ \n который в замечательной ОС Виндовс в два символа \r\n переводится. Это я к тому, что файл нужно, как двоичный открывать.
Yandex
Объявления
09.08.2010, 20:41     Как прочитать последние 10Кб в txt файле?
Ответ Создать тему
Опции темы

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