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

Осуществить вывод строк из файла, используя массив указателей на эти строки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Builder Как в функцию быстрой сортировки передать указатель на StringGrid? http://www.cyberforum.ru/cpp-beginners/thread151201.html
Доброго времени суток. Возник вопрос, как в функцию быстрой сортировки (метод Хоара), передать указатель на StringGrid. Хочу сделать сортировку в столбце, а вот как передать указатель, ни как понять не могу. void __fastcall TForm1::Button1Click(TObject *Sender) { QuickSort( , 0, StringGrid1->RowCount); } //--------------------------------------------------------------------------- int...
C++ Инкремент. Где ошибка Привет, помогите плз с кодом, некорректный результат инкремента..( #include "stdafx.h" #include <iostream> using namespace std; class SimpleCircle { public: //конструкторы http://www.cyberforum.ru/cpp-beginners/thread151195.html
C++ Добавить класс в программу
С классами совсем не знаком, поэтому обращаюсь к Вам) Требуется присутствие класса в коде. вот сам код: #include<conio.h> #include<stdio.h> #include<stdio.h>
C++ Си, использование вложенных файлов *.c
Всем доброго времени дня! Вопрос: Пишу программу на C под Linux. есть файл main.c, в котором у меня располагается основное тело программы, функции итд... Но считаю это избыточным, хочу функции вывести в другой сишный файл, к примеру utils.c... Как использовать функции в utils.c вызывая их из main.c? В main.c делал #include <utils.c>, но не помогло...Прописывал в utils.c вначале все...
C++ Как именно округляются float и double? http://www.cyberforum.ru/cpp-beginners/thread151139.html
Вот имеется double l, функция sqrt из cmath и следующие формулы: sqrt(2-2*sqrt(1-l*l/4)) sqrt(l*l/4+1-sqrt(1-l*l/4)-sqrt(1-l*l/4)+1-l*l/4) sqrt(l*l/4+(1-sqrt(1-l*l/4))*(1-sqrt(1-l*l/4))) Если l длина стороны вписанного в круг с радиусом 1 правильного многоугольника с 2^n сторонами, то формула должна вычислить длину стороны вписанного в тот же круг правильного многоугольника с 2^{n+1}...
C++ Компилятор C не C++ Где можно скачать один крмпилятор C (без C++!!!) можно можно в IDE главное чтобы весил как можно меньше в google искал он мне выдаёт копиляторы C/C++ и весят они до... короче много!!! Заранее всем спасибо!!! подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
03.07.2010, 01:52     Осуществить вывод строк из файла, используя массив указателей на эти строки
Prividenie, ну да... Тогда читать в буфер по символу, проверять символы на предмет совпадения с ".!?" и, если совпадают - скопировать буфер в массив, очистить буфер, пропустить ведущие пробелы и дальше читать по символу в буфер...
Для относительно небольших файлов можно весь файл оптом в буфер, а из него нарезать по предложению...

Добавлено через 38 минут
вот так примерно
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
    
#define FILE_NAME "1.txt"
#define SENT_END ".!?"
#define SKIP_CHAR ','
 
int main(void){
    FILE * f;
    char buf[BUFSIZ], * pBuf, ** arr;
    long cnt, i;
    int inside, ch;
    
    if ( ( f = fopen(FILE_NAME, "r") ) == NULL ){
        perror("fopen");
        exit(EXIT_FAILURE);
    }
    
    arr = NULL;
    cnt = 0;
    inside = 0;
    *buf = 0;
    pBuf = buf;
    
    while ( ch = fgetc(f) ){
        if ( ! inside && isspace(ch) )
            continue;
        if ( ! strchr(SENT_END, ch) && ch != EOF ){
            inside = 1;
            if ( ch == '\n' )
                ch = ' ';
            *pBuf++ = ch;
        }
        else {
            if ( ch != EOF )
                *pBuf++ = ch;
            *pBuf = 0;
            if ( ( arr = (char**)realloc(arr, sizeof(char*) * (cnt + 1)) ) == NULL ){
                perror("realloc");
                exit(EXIT_FAILURE);
            }
            if ( ( arr[cnt++] = strdup(buf) ) == NULL ){
                perror("strdup");
                exit(EXIT_FAILURE);
            }
            *buf = 0;
            pBuf = buf;
            inside = 0;
            if ( ch == EOF )
                break;
        }
    }
    fclose(f);
    
    if ( ! arr ){
        fprintf(stderr, "File is empty or another error.\n");
        exit(EXIT_FAILURE);
    }
    
    printf("\n***All sentences in file:\n");
    for ( i = 0; i < cnt; ++i )
        printf("%03d:\t%s\n", i + 1, arr[i]);
    
    printf("\n***Sentences without '%c' character:\n", SKIP_CHAR);
    for ( i = 0; i < cnt; ++i )
        if ( ! strchr(arr[i], SKIP_CHAR) )
            printf("%03d:\t%s\n", i + 1, arr[i]);
    
    for ( i = 0; i < cnt; ++i )
        free(arr[i]);
    free(arr);
    
    exit(EXIT_SUCCESS);
}
 
Текущее время: 11:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru