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

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

Войти
Регистрация
Восстановить пароль
 
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
#1

Удаление последних строк. - C++

10.10.2011, 23:16. Просмотров 662. Ответов 12
Метки нет (Все метки)

Есть файл, содержащий неизвестное количество строк. как удалить 3 последние из них?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2011, 23:16     Удаление последних строк.
Посмотрите здесь:

Текстовые файлы. Удаление последних элеметов - C++
Есть файл, в нем строка, нужно удалить 2 последних символа, так, чтобы в файле они не просто отбросились, а вообще пропали. Перезапись во...

Чтение последних 10 строк - C++
Подскажите алгоритм вывода нескольких последних строк из большого файла (~1GB). Построчное чтение и вывод только последних строк тут явно...

Распечатать n последних введенных строк - C++
Задание - написать программу с именем tail, что печатает n последних введенных строк. По умолчанию n = 5. Однако n может быть задано и в...

Распечатайте 15 последних строк текстового файла. - C++
Дан большой текстовый файл с длиной строк не более 100 символов. Распечатайте 15 последних строк файла.

Ошибка чтения первых и последних 5 строк массива - C++
Есть программа крестики нолики. Игровое поле создается и отображается нормально (как для консольного приложения), но когда ставится элемент...

Упорядочить строки матрицы по возрастанию последних элементов строк - C++
Всем здрасти.Помогите с лабами пожалуйста. 1)Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1 <n<=...

Упорядочить строки матрицы по возрастанию последних элементов строк - C++
Создать шаблоны функций, выполняющий ввод, вывод и упорядочивание матрицы. Протестировать шаблоны для матриц с элементами различных типов:...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
10.10.2011, 23:20     Удаление последних строк. #2
будет два прохода по файлу. - первым считаешь количество строк - (пусть будет отвечать за это переменная count)
вторым - создаешь дополнительный файл и копируешь в него все строки первого до count-3 и все.
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
10.10.2011, 23:23  [ТС]     Удаление последних строк. #3
1. Как можно посчитать количество строк?
2. А без 2го файла нельзя?
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
10.10.2011, 23:26     Удаление последних строк. #4
Без второго можно, тогда надо будет копировать при первом проходе строки в программу, а это по памяти не есть зер гуд.
подсчитать количество строк по символам "\n" в конце строчек
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
10.10.2011, 23:31  [ТС]     Удаление последних строк. #5
Спс, уже проясняется ситуация в голове) а примеров нет? я гуглю, но толку 0... =(
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
10.10.2011, 23:49     Удаление последних строк. #6
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
// Файл t1.cc
#include <stdio.h>
#include <conio.h>
 
 
using namespace std;
int main()
{
    FILE *t = NULL;
    t = fopen("путь\\1.txt","rt");
    char c;
    int count(0);
    
    while (!feof(t))
    {
    fscanf(t,"%c",&c);
    if(c == '\n') count++;
 
    }
    printf("%i",count);
    fclose(t);
    FILE *wr = fopen("путь\\2.txt","wt");
    t = fopen("путь\\1.txt","rt");
    count-=2;
    while (count>0)
    {
        fscanf(t,"%c",&c);
        fprintf(wr,"%c",c);
        if (c=='\n') count--;
    }
    fclose(wr)  ;
    fclose(t);
    getch();
    return 0;
 
}
Добавлено через 1 минуту
вот так вот примерно это все решается. можно и оптимизировать, я думаю, если посидеть)
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
10.10.2011, 23:54  [ТС]     Удаление последних строк. #7
Цитата Сообщение от }{NiM Посмотреть сообщение
count-=2;

что это?
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
10.10.2011, 23:56     Удаление последних строк. #8
так как на три строки меньше записать необходимо.

Добавлено через 50 секунд
причем первая строка считается от нуля вначале. а при записи выход при count == 0, значит, одна строка сама теряется. остается отнять еще две строки

Добавлено через 57 секунд
можно написать
C++
1
2
count-=3;
while (count>=0)
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
10.10.2011, 23:59  [ТС]     Удаление последних строк. #9
FILE *t = NULL; а что означает "NULL"?
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
11.10.2011, 00:01     Удаление последних строк. #10
указатель изначально никуда не указывает == NULL. можно, в принципе не писать. просто привилось со временем
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
11.10.2011, 00:14  [ТС]     Удаление последних строк. #11
Спсибо, большое!

Добавлено через 12 минут
А еще такой вопрос. Перевести текст в число. Это как и зачем?) что то типа strtoint
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
11.10.2011, 00:36     Удаление последних строк. #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int str_to_int(const char* str) {
   int num = 0, cnt = 1, len = 0;
   while(*str++)
        len++;
   for(--str; len > 0; num += (*(--str)-'0')*cnt, cnt*=10,len--);
   return num;
}
 
int main(void) {
   printf("%d\n", str_to_int("3"));
   printf("%d\n", str_to_int("75"));
   printf("%d\n", str_to_int("3209"));
   getchar();
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2011, 02:37     Удаление последних строк.
Еще ссылки по теме:

Функция,которая считывает из файла только n последних строк - C++
Привет! Подскажите как прописать функцию, перед этим уже прописала потоковое чтение из файла и посчитала количество строк в файле. Спасибо!

Разработать программу, выводитящая на экран по желанию пользователя: а) N первых строк файла; б) N последних - C++
Создать текстовый файл с произвольным текстом. Разработать программу, которая выводит на экран по желанию пользователя: а) N первых строк...

Сформировать массив строк. Удалить из него одинаковые строки. Сформировать массив строк. Удалить из него К последних строк - C++
Сформировать массив строк. Удалить из него одинаковые строки. Сформировать массив строк. Удалить из него К последних строк.

Ввести пять строк и из каждой строки вывести пять последних символа - C++
Ввести пять строк и из каждой строки вывести пять последних символа. P.S сори что второй раз,просто препод сказал, что несовсем...

Удаление из строк - C++
Удаление из строк всех букв со сжатием строк ( остаются цифры и символы) PS Дано: 2 строки по 80 символов.


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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.10.2011, 02:37     Удаление последних строк. #13
Цитата Сообщение от Fitz
Перевести текст в число.
atoi(), atof()
sscanf()
Yandex
Объявления
12.10.2011, 02:37     Удаление последних строк.
Ответ Создать тему
Опции темы

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