c текстовый файл в массив

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

Какой элегантный способ добиться этого? Я знаю некоторые аккуратные трюки, чтобы читать текстовый файл непосредственно в один буфер соответствующего размера, но разбивка его на строки делает его более сложным (по крайней мере, насколько я могу судить).

Разбивание его на строки означает синтаксический анализ текста и замену всех EOL (символами EOL I
и
) на 0. Таким образом, вы можете на самом деле повторно использовать свой буфер и хранить только начало каждой строки в отдельный массив char * (всего за 2 прохода).

Таким образом, вы можете прочитать один файл для всего размера файла + 2 разбора, который, вероятно, повысит производительность.

Можно прочитать количество строк в файле (loop fgets), а затем создать двумерный массив с первым измерением, состоящим из числа строк + 1. Затем просто перечитайте файл в массиве.

Однако вам нужно определить длину элементов. Или сделайте подсчет для самого длинного размера строки.

Я пытаюсь прочитать содержимое файлового объекта в массив строк, но все, что я пытаюсь, ничего не отображается, когда я печатаю содержимое массива. В частности, я хочу напечатать последние десять строк текстового файла, передав их в массив и используя цикл for в массиве.

Файл (ы) — это просто большие блоки текста, включая пробелы. Файл выглядит так:

Язык программирования — это искусственный язык, разработанный
передавать инструкции на машину, особенно
компьютер. Языки программирования могут быть использованы для создания
программы, которые контролируют поведение машины и / или
выразить алгоритмы точно.
Самые ранние языки программирования предшествуют изобретению
компьютера, и были использованы для управления поведением
такие машины, как жаккардовые станки и пианино.
Тысячи разных языков программирования были
создано, главным образом, в компьютерной области, причем многие
создан каждый год. Большинство языков программирования описывают
вычисления в императивном стиле, то есть как последовательность
команд, хотя некоторые языки, такие как те, которые
поддержка функционального программирования или логического программирования, использование
альтернативные формы описания.

Я хочу прочитать каждую строку в свой собственный элемент массива строк.

У меня есть другая функция, которая успешно использует getline () для отображения каждой строки текстового файла по 10 строк за раз.

Решение

Обычно так можно читать строки, используя ifstream :

или прочитать последние 10 строк:

и тогда вы можете напечатать последние 10 строк:

Обратите внимание, что GetLine читает строку за строкой, то есть, если ваш текст не содержит разрывов строк, весь ваш файл будет читаться так, как если бы это был только один файл.

Другие решения

Возможно, ваш файл не содержит правильных маркеров конца строки, как ожидает ваша программа, но ваш код предполагает этот файл только что получил numrecords маркеры конца строки. Где эта переменная определена и как вы ее получите — это другой вопрос.
Не используйте статический массив здесь, используйте std :: list, используйте list::reverse_iterator (может получить значение от list::rbegin() итерируйте 10 раз, если итератор не станет равным list :: rend ()) для итерации по последним 10 записям, ваш код будет намного проще (на самом деле, всего несколько строк)

Добрый день, прошу мне помочь, есть текстовый файл под названием «From» с таким содержанием:

Нужно считать все цифры и положить в массив «mas» Чтобы можно было вывести на консоль таким образом:

Чтобы на консоле вывелось:

Закрыт по причине того, что непонятна суть вопроса участниками Grundy, pavel, Denis, aleksandr barakin, Bald 18 авг ’16 в 10:34 .

Постарайтесь писать более развёрнутые вопросы. Для получения ответа поясните, в чём именно вы видите проблему, как её воспроизвести, что вы хотите получить в результате и т. д. Приведите пример, наглядно демонстрирующий проблему. Если вопрос можно переформулировать согласно правилам, изложенным в справке, отредактируйте его.

Оцените статью