Как узнать количество строк в файле c
Перейти к содержимому

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

  • автор:

Подсчет символов, строк и слов

Программа считает количество введенных пользователем символов, строк и слов. Чтобы программа корректно закончила работу и правильно посчитала, после набора строк надо перейти на новую строку, после чего нажать Ctrl + D (по крайней мере в терминале Linux).

#include int main() < char ch, flag=-1; unsigned c=0; // символы unsigned w=0; // слова unsigned n=0; // строки while ((ch = getchar()) != EOF) < if (ch == '\n') n++; else c++; if (ch == ' ' || ch == '\n') flag = -1; else if (flag == -1) < flag = 1; w++; >> printf("Символы: %u\n", c); printf(" Слова: %u\n", w); printf(" Строки: %u\n", n); >
one two three four Символы: 16 Слова: 4 Строки: 3

X Скрыть Наверх

Решение задач на языке C

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

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

Отслеживать
задан 19 авг 2018 в 7:08
35 1 1 серебряный знак 10 10 бронзовых знаков

Воспользуйтесь ReadLines или если хотите тратить прямо минимум ресурсов, то чтение с буфером, чтение больших файлов — с этим можно просто посчитать количество переносов строки в файле

19 авг 2018 в 9:14

int count = System.IO.File.ReadAllLines(path_base).Count(); используя System.Linq, но тут нужно учитывать, что для 32 битных систем максимум файл в 4Gb, лучше использовать вариант из ответа ниже

19 авг 2018 в 17:17

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

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

var linesCount = 1; int nextLine = '\n'; using (var streamReader = new StreamReader( new BufferedStream( File.OpenRead(@"D:\temp\11.xml"), 10 * 1024 * 1024))) // буфер в 10 мегабайт < while(!streamReader.EndOfStream) < if (streamReader.Read() == nextLine) linesCount++; >> Console.WriteLine(linesCount); 

Отслеживать
ответ дан 19 авг 2018 в 16:29
32.8k 2 2 золотых знака 30 30 серебряных знаков 75 75 бронзовых знаков
вместо ‘\n’ лучше использовать Enviroment.NewLine
19 авг 2018 в 17:19

@B.Vandyshev Enviroment.NewLine — это строка, а не символ. Я не могу сравнивать при чтении строку и символ. К тому же в винде это \r\n , в линуксе \n , то есть \n присутствует в любом случае, не зависимо от того, с каким окончанием строк сохранен файл.

19 авг 2018 в 17:22
@tym32167, а в маке вроде \r ?
19 авг 2018 в 17:25
@Grundy про мак к сожалению не знаю
19 авг 2018 в 17:26
@Grundy ну и здорово, значит ответ править не придется 🙂
19 авг 2018 в 17:29

 int count = 0; string line; TextReader reader = new StreamReader(path_base); while ((line = reader.ReadLine()) != null) < count++; >reader.Close(); 

Отслеживать
ответ дан 19 авг 2018 в 7:17
35 1 1 серебряный знак 10 10 бронзовых знаков

File.ReadLines(path).Count() — является эквивалентом вашего кода. Метод ReadLines не читает весь файл сразу, в отличие от ReadAllLines .

19 авг 2018 в 7:41

А если файл большой (гигабайты) и состоит из одной-единственной строки? Облом. Если нужно решение, работающее на любых входных данных, то нужно читать файл блоками и искать в них символы конца строки.

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

Известно, что программами с графическим интерфейсом удобней пользоваться, поскольку они рассчитаны на высокие требования, плюс терминал позволяет определенные задачи решать значительно быстрей. Так есть утилита wc, она может подсчитывает количество строк в файле. Число строк мало о чем говорит, а вот в случае, когда совмещается несколько команд, можно считать строки, учитывая необходимые параметры. Как подсчитать строк в файле Linux? Осветим пару простых, но эффективных примеров применения команд grep, sed и awk.

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

Нами уже была рассмотрена команда WC, теперь следует ознакомиться с одним из ее ключевых параметров — -l. Он подсчитывает переходы на новую строку, то есть происходит подсчет всей строки, включая и пустые. С задачей справится команда справляется быстрей всех остальных, однако возможен только определенных строк — с заданным условием.

$ wc -l имя_файла

$ grep -c $ имя_файла

$ sed -n \$= имя_файла

$ awk ‘END< print NR >‘ имя_файла

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

Как видим, результат одинаков, но команде wc потребовалось меньше времени на выполнение поставленной задачи. Остальные команды применимы для сложных запросов. Команда grep позволяет обнаружить строки только с текстом: grep -c ‘текст’ имя_файла.

Как читать строки

Команда grep обращается с регулярными выражениями, поэтому можно объединить несколько условий по типу И, ИЛИ, НЕ.

Когда sed выполняет обработку текста, но намного легче выполнить подсчет числа финальных строк командой wc. Можно удалить все строки, которые имеют длину менее трех символов, а сложных случаях подсчет символов осуществляется без комментариев.

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

Если задача простая. то ее можно выполнить и другими способами. Команда awk будет проще и понятней.

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

Для наглядного примера работы команды awk выполним подсчёт строк, одновременно с этим осуществляя поиск необходимого значения в табличном файле csv.

В примере выполним подсчет числа строк со значением второго параметра более 50.

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

Добавим 0 к выражению, чтобы убрать все нечисловые выражения.

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

Author24 — интернет-сервис помощи студентам

В текстовом файле определить количество всех строк и количество символов в каждой строке.
В текстовом файле определить количество всех строк и количество символов в каждой строке.

Определить количество строк в текстовом файле
Есть текстовый файл в котором что то написано, нужно посчитать количество строк используя язык VBS.

Определить количество строк в открытом файле
Здравствуйте, Форумчане. Напишите пожалуйста исходник. Мне нужно чтобы, 1. "программа открывала.

Определить количество символов, слов и строк в файле
Здравствуйте ребята, на практических столкнулась с проблемой, необходима ваша помощь) Есть некий.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *