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

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

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

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

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

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

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

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

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

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

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

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

12
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
10.10.2011, 23:20 #2
будет два прохода по файлу. - первым считаешь количество строк - (пусть будет отвечать за это переменная count)
вторым - создаешь дополнительный файл и копируешь в него все строки первого до count-3 и все.
1
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
10.10.2011, 23:23  [ТС] #3
1. Как можно посчитать количество строк?
2. А без 2го файла нельзя?
0
}{NiM
64 / 64 / 2
Регистрация: 25.11.2009
Сообщений: 283
10.10.2011, 23:26 #4
Без второго можно, тогда надо будет копировать при первом проходе строки в программу, а это по памяти не есть зер гуд.
подсчитать количество строк по символам "\n" в конце строчек
1
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
10.10.2011, 23:31  [ТС] #5
Спс, уже проясняется ситуация в голове) а примеров нет? я гуглю, но толку 0... =(
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 минуту
вот так вот примерно это все решается. можно и оптимизировать, я думаю, если посидеть)
1
Fitz
7 / 7 / 0
Регистрация: 09.10.2011
Сообщений: 38
10.10.2011, 23:54  [ТС] #7
Цитата Сообщение от }{NiM Посмотреть сообщение
count-=2;

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

Добавлено через 12 минут
А еще такой вопрос. Перевести текст в число. Это как и зачем?) что то типа strtoint
0
xAtom
915 / 740 / 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;
}
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
12.10.2011, 02:37 #13
Цитата Сообщение от Fitz
Перевести текст в число.
atoi(), atof()
sscanf()
0
12.10.2011, 02:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2011, 02:37
Привет! Вот еще темы с ответами:

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

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

Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла - C++
Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного...

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


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

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

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