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

Фильтрация текста в файле - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Закрытые поля структуры. http://www.cyberforum.ru/cpp-beginners/thread45885.html
Существуют ли закрытые поля структуры? Если да, то как их описывать? Добавлено через 39 минут 26 секунд Ну что никто не может ответить на такой легкий вопрос?
C++ Внутреннее представление конструтора и деструктора Я знаю, что конструктор и деструктор в явном виде ничего не возвращает. Однако на уровне ассемблерных команд он восстанавливает содержимое вершины стека(в регистр, ячейку памяти или сегментый регистр). Какой тип в теории может возвращать конструктор и деструктор? http://www.cyberforum.ru/cpp-beginners/thread45882.html
генерация очень больших случайных чисел C++
Пожалуйста помогите мне нужна программа генерирующая числа размером 12 символов вот мой код : #include "stdafx.h" #include <windows.h> #include <iostream> #include <iomanip> using namespace std; const int CP=1251;
Использование указателей C++
Всем привет, вот изучаю помалу С++. И уже третий час немогу впарится в Указатели недаётся мне это, вот вроде более менее разобрался, скажите правильно нет: #include <iostream> int main() { int xxx; unsigned short int myAge = 5; unsigned short int * pAge = NULL; // a pointer pAge=&myAge; std::cout << "pAge " << pAge<<"\n"; //Хранится адрес myAge std::cout << "*pAge...
C++ Наследование, возврат по ссылке.. http://www.cyberforum.ru/cpp-beginners/thread45847.html
Есть такое В некоторых компьютерных языках, таких как Visual Basic, есть операции, с помощью которых можно выделить часть строки и присвоить ее другой строке. (В стандартном классе string предложены различные подходы.) Используя наследование, добавьте такую возможность в класс Pstring из упражнения 2. В новом производном классе Pstring2 разместите три новых функции: left(), mid(),...
C++ Посоветуйте IDE для начинающего Доброго времени суток! Я только начинаю работать с С++, посоветуйте, пожалуйста, какие программы лучше использовать, включая все последние версии (то есть не в духе "новичку и это сойдет":)), чтобы я был так сказать, "вооружен до зубов":) Также посоветуйте с какой книги лучше начать. Всем буду благодарен за советы! :) подробнее

Показать сообщение отдельно
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.08.2009, 06:51     Фильтрация текста в файле
C
1
2
3
4
struct node {
    char *pString;
    struct node *pNext;
};
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdlib.h>
#include <string.h>
 
/* DuplicateLine:  создаёт копию строки l в памяти */
char *DuplicateLine(const char *l)
{
    char *p;
    
    if ((p = (char *) malloc(strlen(l)+1)) != NULL);
        strcpy(p, l);
    return p;
}
 
/* FreeLine:  высвобождает строку l из памяти */
void FreeLine(const char *l)
{
    free((void *) l);
}
C
1
2
3
4
    if (!SearchNodeList())
        AddNodeList();
    PrintList();
    DestroyList();
для каждой строки, которую прочитал из файла, проводишь поиск по списку (начинается всё с пустого списка) и, если её в списке нет, создаёшь для неё узел и добавляешь его в конец списка
когда файл прочитан, переоткрываешь его и записываешь список

создание узла, если его нет
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdlib.h>
 
void *CreateNode(const char *l)
{
    struct node *p;
 
    if ((p = malloc(sizeof(struct node))) == NULL)
        return NULL;
    p->pString = DuplicateLine(l);
    p->pNext = NULL;
    return (void *) p;
}
добавление узла в список (если его нет)
C
1
2
3
4
5
6
7
8
9
void AddNodeList(struct node **ppTail, const char *l)
{
    struct node *p;
 
    if ((p = CreateNode(l)) == NULL)
        return;
    (*ppTail)->next = p;
    *ppTail = p;
}
всё время хранишь указатель на хвост, чтобы каждый раз весь список не проходить

а попроще - массив указателей на строки, вместо узлов просто строки в массиве указателей
тоже поиск проводишь, если строки нет, добавляешь её, индекс строк переставляешь (который считает сколько строк в массиве записано) и дальше двигаешь - имеет ограничение, придётся определиться сколько всего строк в файле может быть

со списком будет выделяться ровно столько памяти, сколько будет нужно для строк, если там их две три или ноль, а с указателями всегда будет нужно выделить максимально большой массив, чтобы не случилось так, что строки в файле ещё есть, а массив до края заполнился и выводится (хотя остались ещё необработанные строки)
 
Текущее время: 03:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru