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

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

  • автор:

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

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

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

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

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

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

Но этот способ занимает много времени и забивает оперативную память, при загрузке текстовых файлов размером более 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.6k 2 2 золотых знака 29 29 серебряных знаков 73 73 бронзовых знака
вместо ‘\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

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

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

Программа считает количество введенных пользователем символов, строк и слов. Чтобы программа корректно закончила работу и правильно посчитала, после набора строк надо перейти на новую строку, после чего нажать 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

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

Нужно написать программу :
Подсчитать количество строк в текстовом файле. Под строкой понимать совокупность символов, заканчивающихся символами конца строки ‘\n’.

Программа вроде простая, но у меня чета не получается

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

В текстовом файле подсчитать количество символов и строк
Ребята! Помогите разобраться с файлами нужно — в текстовом файле. Подсчитать количество символов и.

Файл: В текстовом файле подсчитать количество непустых строк.
В текстовом файле подсчитать количество непустых строк.

В текстовом файле подсчитать количество строк, которые оканчиваются буквой «в»
В текстовом файле подсчитать количество строк, которые оканчиваются буквой «в». Вообще не умею.

Файлы: в текстовом файле подсчитать количество строк, которые начинаются с буквы
В текстовом файле подсчитать количество строк, которые начинаются с буквы «ф».

Эксперт С++

7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
С++ или C ?
А что получается ?
Читать в цикле построчно — пока не будет eof (конец файла)
Регистрация: 17.05.2010
Сообщений: 6

С++
А читать построчно до конца, пробегаясь по всем строкам.
Должно быть чтото вроде:

открыть файл;
.
цикл(условие) — для пробежки по всему файлу
если найден конец строки — \n;
какой-нибудь X++;
>
printf («%d»,x);

а как открыть и пройтись циклом по всему файлу — незнаю

Регистрация: 17.05.2010
Сообщений: 6
Ну помогите ПОЖАЛУСТА, кто-нибудь!
Регистрация: 28.07.2009
Сообщений: 144

Лучший ответ

Сообщение было отмечено как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#include #include #include using namespace std; int main() { char *str = new char [1024]; int i=0; ifstream base("name.txt"); while (!base.eof()) { base.getline(str, 1024, '\n'); i++; } base.close(); delete str; cout  i  '\n'; system ("pause"); }

Вот. Смотри. Если останутся вопросы — спрашивай.
Регистрация: 17.05.2010
Сообщений: 6

СПАСИБО.
всё работает правильно))))
а можешь объяснить принцип работы ifstream в 10 строчке, и 13 строчку.
просто я с такими функциями не работал никогда =( и. совсем понял их

Регистрация: 18.05.2010
Сообщений: 10
ifstream это тип данных, который работает с файлами, и по совместительству открытие потока)
Регистрация: 28.07.2009
Сообщений: 144

в 10й строчке, как уже сказали, объявляется создание переменной с типом «поток», причем поток из файла и входящий (менять ничего не можем, только читать). Для исходящего нужен тип ofstream.

в 13й строке используется метод getline класса fstream или istream, точно не помню. В общем, какого-то из предков класса ifstream. Он считывает строку из потока, длинной n (1024 в моем случае) символов, или до первого встретившегося символа x (в моем случае — ‘\n’, перевод на новую строку), и заносит ее в строку str.

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

Регистрация: 17.05.2010
Сообщений: 6

спсибо)
теперь более мение ясно.
что такое классы, наследование, иерархия классов я немного знаю, а вот с патоками не сталкивался

Регистрация: 28.07.2009
Сообщений: 144

Потоки — это сложная структура, через которую данные передаются. Клавиатура, дисплей, принтер, файл — все это работает по сути через потоки.

Кстати, советую на них переходить. Юзай cout и cin — удобные вещи.

Регистрация: 17.05.2010
Сообщений: 6
ок =)
буду переходить
Регистрация: 05.01.2017
Сообщений: 3

JamesBlack
Нашел проблему, при переделывании кода для не только подсчета, но и вывода строк. Для тех кому нужно вывести строки:

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
#include #include #include #include using namespace std; int main() { setlocale(LC_ALL,"rus"); std::ifstream fin("text.txt"); if(!fin.is_open()) { std::ofstream fout("text.txt"); // создаём объект класса ofstream для записи и связываем его с файлом cppstudio.txt fout  "Работа с файлами в С++\n"; // запись строки в файл fout  "Вторая строка\n"; fout.close(); // закрываем файл } else { char **str = new char* [1024]; for (int i = 0; i  1024; i++) { str[i] = new char[50]; } int count = 0; for (int i = 0; !fin.eof(); i++) { fin.getline(str[i], 50, '\n'); count++; } fin.close(); for(int i = 0; i  count; i++) { std::cout  str[i]  '\n'; } std::cout  "\nСписок строк - "  count  '\n'; delete str; } getchar(); system("pause");

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

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