Другие языки программирования и технологии

Как пользоватся fopen() в C++

нужна программа что считает количество слов в файле, количество одинаковых символов, и ищет палиндромы.
Хочу использовать массив. Указатели - никак не пойму зачем они и как ими пользоваться
Если у тебя небольшие текстовые файлы, то можешь считать все содержимое файла прямо в буфер в памяти, а потом просто работать уже этим буфером, как с длинной строкой или массивом. Как-то так:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    char *buf;
    int sz;
    // открыл файл
    FILE *fd = fopen("test.c", "r");

    if ( !fd ) {
        printf("error open file\n");
        return;
    }

    // узнал размер
    fseek(fd, 0, SEEK_END);
    sz = ftell(fd);
    fseek(fd, 0, SEEK_SET);

    // выделил нужное количество памяти
    buf = malloc(sz + 1);

    // прочитал содержимое файла
    sz = fread(buf, 1, sz, fd);
    fclose(fd);
    buf[sz] = '\0';

    // работаешь со строкой в памяти
    printf("%s", buf);

    free(buf);
    return 0;
}

> To ra (предыдущий ответчик) Тогда уж проще отмаппить файл в память, чем копировать его.. .
Как мне попроще отмапить файл в память под виндой, под linux'ом и в контроллере с кастрированным DOS'ом, в котором никаких "отмапить" отродясь не было? Желательно, чтобы было поменьше кода и программа компилировалась для любой из систем, буду благодарен за совет.
Александр Шефер
Александр Шефер
99 434
Лучший ответ
Встречные вопросы:
- Искать какие палиндромы? Слова-палиндромы или фразы-палиндромы?
- Что ткаое слово? Последовательность символов, для которых isalpha() дает 1? Или последовательность, которая вводится через scanf("%s")?

Про указатели кники толстые пишут. Ты расчитываешь, те тут быренько на пальцах все объяснят?

To ra (предыдущий ответчик) Тогда уж проще отмаппить файл в память, чем копировать его...
указатели - http://programmersclub.ru/20/
fopen - http://www.cplusplus.com/reference/clibrary/cstdio/fopen/
это разные вещи. я так и не понял, о чем вопрос
Женя Савин
Женя Савин
38 447
никак
Andrew Shvets
Andrew Shvets
57