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

работа с файлом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Реализация блочной сортировки файла http://www.cyberforum.ru/cpp-beginners/thread161367.html
Здравствуйте! Есть задача,как следствие ее нужно решить)) Я прекрасно знаю и понимаю,что никто за меня решать здесь не собирается.Но пожалуйста...до четверга ее нужно решить...очень надо...дико прошу...готова заплатить(в разумных пределах)... вот задача: Реализовать блочную сортировку некоторого файла большого размера. Файлы создаются случайным образом и состоят из одного числового поля и...
C++ Подходит ли книга "Освой самостоятельно c++ за 21 день" для новичков? Здравствуйте! Я новичок в программирование. И желаю научиться C++ есть книга Джесс Либерти "Освой самостоятельно c++ за 21 день" Начал с него и прошу совета, подходит ли он для таких как я ? которые не разу не изучали программирование. И что изучать после этой книги ? http://www.cyberforum.ru/cpp-beginners/thread161361.html
Как включить отображение номеров строк в MSVS? C++
Привет. Я пользуюсь MS Visual C++ ... если компиллятор сообщает .....pg.cpp(135) например, как искать линию под указанным номером? Каждый раз пальцем с верху отсчитывать?
Закрывается окно консоли C++
Здравствуйте! Я новичок в программирование. И желаю научиться C++ есть книга Джесс Либерти "Освой самостоятельно c++ за 21 день" "Проблема из книги ВЫШЕ" там вначале дается код: #include (iostream.h) int main() { cout << "Hello world!\n";
C++ Звук, генерация, голос http://www.cyberforum.ru/cpp-beginners/thread161321.html
ищу способ как можно: 1) генерировать звук 1.1) генерировать звук конкретной частоты и громкости (через колонки), безшовный(чтобы не возникало шипения при переходе между частотами) 1.2) генерировать сложный звук состоящий из нескольких частот 2) считывать звук (в реалтайме, с микрофона) 2.1) основная частота 2.2) много частот теоретический вопрос: если упростить голос человека до одной...
C++ Посылка файла через sendto(...) Через протокол UDP. Нужно открывать файл для чтения и указатель на него передавать в sendto? подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
25.08.2010, 00:09     работа с файлом
Danvern, поправьте, если ошибаюсь: нужно читать строки из лог-файла, выдёргивать из них последнюю часть (содержащую запрошенный хост) и сохранять куда-то найденное? Или всё-таки google искать?
Если нужно проверить, содержит ли строка google.com, так это просто
C
1
2
3
4
...
char buf[BUFSIZ];
...
printf("%s\n", strstr(buf, "google.com") ? "yes" : "no");
C++
1
2
3
4
...
std::string buf;
...
std::cout << ( buf.find("google.com") == std::string::npos ? "niht" : "ya-ya") << std::endl;
Если же всё-таки нужна последняя часть из строки, то вот, правда, на С
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char * last_word(const char * str){
    char * p;
    
    if ( ( p = strrchr(str, ' ') ) == NULL ){
        fprintf(stderr, "Wrong string!\n");
        return NULL;
    }
    return ++p;
}
 
int main(void){
    char *rows[] = {
        "[2010-08-24 22:19:08] 217.118.79.33 dan HTTP GET http://google.com/",
        "[2010-08-24 22:19:08] 217.118.79.33 dan HTTP GET http://shmoogle.com/",
        "[2010-08-24 22:19:08] 217.118.79.33 dan HTTP GET http://yandex.ru/",
        NULL
    };
    char ** hosts, ** row, * host;
    size_t count, i;
    
    hosts = NULL;
    count = 0;
    
    for ( row = rows; *row; ++row ){
        if ( ( host = last_word(*row) ) == NULL ){
            fprintf(stderr, "Error while parsing row #%d\n", count + 1);
            exit(EXIT_FAILURE);
        }
        if ( ( hosts = (char**)realloc(hosts, sizeof(char*) * (count + 1)) ) == NULL ){
            fprintf(stderr, "Memory error!\n");
            exit(EXIT_FAILURE);
        }
        if ( ( hosts[count++] = strdup(host) ) == NULL ){
            fprintf(stderr, "Memory error!\n");
            exit(EXIT_FAILURE);
        }
    }
    
    printf("%d hosts found:\n", count);
    for ( i = 0; i < count; ++i )
        printf("%s\n", hosts[i]);
    
    for ( i = 0; i < count; ++i )
        free(hosts[i]);
    free(hosts);
    exit(EXIT_SUCCESS);
}
Откуда-нибудь из середины строки вынуть часть было бы сложнее, но не на много...
 
Текущее время: 23:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru