Как посчитать количество строк в файле c

от admin

Подсчет количества строк в файле

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

using namespace System;

//признак конца файла

printf(«Enter your string and press <Enter> and <Ctrl + z> >\n»); while((c=getchar()) !=eof)

printf(«String’s number is: %d\n»,nl); _getch();

Здесь новое по сравнению с предыдущими подобными программами только то, что появилась операция == (равно) и новый оператор if — это оператор условного перехода, изменяющий последовательное (сверху вниз) выполнение операторов программы в зависимости от истинности/ложности условия (оно записывается в круглых скобках в заголовочной части оператора и может представлять собой выражение). Если условие истинно, то выполняется тело оператора, которое обладает точно такими же свойствами, что и тела операторов while и for : если в теле всего один оператор, то этот оператор может не заключаться в фигурные скобки, в противном случае фигурные скобки обязательны. В нашем случае тело состоит из од-

Часть I. Изучение языка С/С++

ного оператора nl++ , который выполняется всякий раз, когда введен не символ конца строки. В противном случае тело if не выполняется. Для простоты понимания мы ввели фигурные скобки там, где их можно опустить, выделяя тем самым тело оператора. Тело оператора while тоже состоит из одного оператора if (неважно, сколько операторов включает тело if ), поэтому оператор while записан без фигурных скобок.

Программа работает так: обнуляется счетчик количества вводимых строк ( nl ), начинает выполняться оператор цикла while , обеспечивающий ввод с клавиатуры потока символов (вычисляется, как обычно, выражение в заголовочной части while , чтобы проверить условие на истинность/ложность, что требует нового ввода символа). Среди потока символов встречаются символы \n , сигнализирующие об окончании строки: когда мы набираем строки в консольном окне, мы заканчиваем их ввод символом <Enter>. Как только такой символ обнаруживается с помощью оператора if , в счетчик nl , расположенный в теле if , добавляется единица. Когда после последней строки, завершающейся символом \n , мы нажмем комбинацию клавиш <Ctrl>+<z> (символ конца ввода), ввод строк завершится. Условие выполнения оператора while нарушится, и управление будет передано на оператор, следующий за его телом. Это будет оператор вывода printf() . Результат работы программы представлен на рис. 2.4.

Рис. 2.4. Результат работы программы листинга 2.5

Подсчет количества слов в файле

Договоримся, что слово — это любая последовательность символов, не содержащая пробелов, символов табуляции ( \t ) и новой строки ( \n ). Наряду с количеством слов программа будет подсчитывать количество символов и строк.

Узнать количество строк в текстовом файле

Как возможно узнать количество строк у текстового файла? Сейчас я узнаю так:

Но этот способ занимает много времени и забивает оперативную память, при загрузке текстовых файлов размером более 1 гигабайта, это не актуально.

Пример с буфером в 10 мегабайт.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304

Читать:
Служба политики диагностики не запущена на windows 7 как запустить

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как посчитать количество строк в файле c

Спрашивающий

Общие обсуждения

В итоге прога должна спрашивать имя файла, а выдодить количество строк
( не считаются только пустые, комменты типа "//" и "/* */" )

эти исходники я взяты с разных книг, почти то что нужно для решения только если б кто подправил

Результат выполнения программы — постраничный вывод на экран текстового файла, имя которого набирает на клавиатуре пользователь по "запросу" программы. Размер страницы — 20 строк. В начале первой страницы — результат диалога с пользователем и поэтому из файла читаются и выводятся только первые 16 строк.

c # как подсчитать строки в текстовом файле

Метод, который вы опубликовали, не особенно хорош. Давайте разберем это:

На самом деле вы держите этот файл в памяти дважды: один раз, чтобы прочитать все строки, и один раз, чтобы разбить его на массив. Сборщик мусора ненавидит это.

Если вам нравятся однострочные, вы можете написать System.IO.File.ReadAllLines(filePath).Length , но это по-прежнему извлекает весь файл в массиве. Нет смысла делать это, если вы не собираетесь удерживать массив.

Более быстрым решением будет:

Приведенный выше код содержит (максимум) одну строку текста в памяти в любой момент времени. Это будет эффективно, пока очереди относительно короткие.

Ну, проблема с этим заключается в том, что вы выделяете много памяти при работе с большими файлами.

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

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

Если вы ищете короткое решение, я могу дать вам однострочник, который, по крайней мере, избавит вас от необходимости разбивать результат:

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

Забыл поставить скобки: int i = File.ReadAllLines(«file.txt»).Count(); — Хобберт Эвергрин

Конечно — он считывает весь поток в память. Это кратко, но сегодня я могу создать файл, который так сильно провалится.

Читайте символ за раз и увеличивайте свой счет на новой строке.

РЕДАКТИРОВАТЬ — после некоторого быстрого исследования. Если вы хотите быть кратким и хотите, чтобы это блестящее новое общее ощущение, рассмотрите это:

который определяет новый класс, который позволяет вам перечислять потоки, тогда ваш код подсчета может выглядеть так:

который дает вам хорошее краткое лямбда-выражение, чтобы делать (более или менее) то, что вы хотите.

Похожие статьи