Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/244: Рейтинг темы: голосов - 244, средняя оценка - 4.73
 Аватар для IrishaIrinaChe
29 / 29 / 3
Регистрация: 23.09.2010
Сообщений: 203

Как посчитать количество символов в файле?

26.10.2010, 23:15. Показов 46078. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброго времени суток, форумчане!

пусть есть текстовый файл Out.txt. необходимо посчитать количество символов в файле.
подскажите, как это сделать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2010, 23:15
Ответы с готовыми решениями:

Как посчитать количество удаленных символов со строки
Здраствуйте! Подскажите пожалуйста, как можно подсчитать количество удаленных символов в строке! Подробнее это звучит так! ...

Как посчитать количество единиц в группах символов?
Дана строка, состоящая из групп нулей и единиц. Посчитать количество единиц в группах с нечетным количеством символов. Т.е я хочу узнать,...

Посчитать количество символов в файле docx
Народ есть файл 123.docx надо на C++ посчитать сколько символов в нем записано. Как это можно сделать?

23
 Аватар для petruchodd
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
27.10.2010, 03:01
C++
1
2
3
4
5
6
7
8
          ifstream in(filename);
          int count =0;
         char a[100]; 
          while(!in.eof())
          {
           in>>a;// 
          count++;
          }
с учетом того что я считывал у себя посимвольно. Это должно работать. "поидее"
1
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.10.2010, 12:04
Лучший ответ Сообщение было отмечено как решение

Решение

IrishaIrinaChe, можно поступить вот так:
C++
1
2
3
TFileStream *fs =new TFileStream("D:\\text.txt",fmOpenRead);
ShowMessage(fs->Size);
delete fs; fs = NULL;

Не по теме:

На всякий случай, напомню, что перевод строки считается как два символа...

3
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
27.10.2010, 13:52
Ребята позвольте спросить ну а как, тогда посчитать количество строк в текстовом файле?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.10.2010, 14:04
Sasha, ну тут два варианта...
1. Открыть файл и читать посимвольно. Когда встретится символ '\n' или '\r\n' инкрементировать переменную (количество строк).
Советую попробовать - набьёте руку в области работы с файлами.
2. А можно поступить так:
C++
1
2
3
4
5
TStringList *sl = new TStringList();
sl->LoadFromFile("D:\\text.txt");
ShowMessage(sl->Count);
delete sl;
sl = NULL;
Вариант для лентяев. Рекомендуется тем, у кого уже есть богатый опыт в программировании и есть куда более серъёзные задачи.
2
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
27.10.2010, 14:11
не нравится мне все это...
учитывая что sizeof(char) равен 1, ваши решения сводятся к частному случаю, к вычислению размера файла, и естественно в байтах, а не символах как таковых...
и раз уж мы говорим о текстовых(файлах) то отмазка про то что перевод строки занимает пару байт не принимается... постановка задачи намекает именно на печатные символы.
в общем исправляйтесь, господа.
p.s. + не забывайте про юникод и т.д.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.10.2010, 14:42
Цитата Сообщение от AntonChik Посмотреть сообщение
учитывая что sizeof(char) равен 1, ваши решения сводятся к частному случаю
Частный случай называется "однобайтовое представление символов".

Цитата Сообщение от AntonChik Посмотреть сообщение
и раз уж мы говорим о текстовых(файлах) то отмазка про то что перевод строки занимает пару байт не принимается... постановка задачи намекает именно на печатные символы.
ASCII таблицу помните?
Так вот... если помните, там имеются управляющие символы.
Они тоже имеют право присутствовать в файле и точно также увеличивают его объём. Вы же намекаете на то, что хотите отфильтровать подобные символы и указать только количество "печатных" символов (именно эти символы можно увидеть на экране без дополнительных преобразований). Вы каждый символ будете сверять с "управляющей последовательностью"?
Подумайте об этом "на досуге".

Цитата Сообщение от AntonChik Посмотреть сообщение
p.s. + не забывайте про юникод и т.д.
Варианты с "двухбайтовым представлением символов" - это отдельная тема.
Универсального метода для чтения и тех, и других файлов - нет.
Нужно только самому, в случае необходимости, писать алгоритм для переключения между вариантами.

Т.к. речь здесь почти всегда идёт о задачах, заданных в рамках учебного процесса, или о создании "конфигурационных" файлов, то рассматривать юникод - приведёт к путанице, ИМХО
1
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
27.10.2010, 15:51
Цитата Сообщение от MikeSoft Посмотреть сообщение
Т.к. речь здесь почти всегда идёт о задачах, заданных в рамках учебного процесса...
вот именно.

раз Вы это понимаете, то не следует давать неполные ответы и ответы для лентяев,
раз люди задают такие (опять же ленивые) вопросы, то первым делом и надо давать им отводки к ASCII-таблице, управляющим символам, возможности их фильтрации, "двухбайтовым представлениям символов" и т.д.

и раскрывать смысл хотя бы как написал petruchodd, а не прятаться за непонятным
C++
1
->Size
который может смыть в чьих-то головах смыть границу между символом и байтом.

извиняюсь за оффтоп
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.10.2010, 16:13
Цитата Сообщение от AntonChik Посмотреть сообщение
и раскрывать смысл хотя бы как написал petruchodd, а не
когда тема пошла "в глубину" - я указал, что нужно читать файл и анализировать содержимое.
Цитата Сообщение от AntonChik Посмотреть сообщение
извиняюсь за оффтоп
Почему же оффтоп? Это вполне трезвый взгляд на вещи, вполне дельное предложение (касающееся непосредственно данной задачи).
Однако объяснить всё с нуля в каждой теме - просто невозможно. Так можно и "лучшие годы жизни потратить" (с).
Я всё же рассчитываю, что минимальные знания должны быть у каждого человека, связанного с программированием.
0
 Аватар для IrishaIrinaChe
29 / 29 / 3
Регистрация: 23.09.2010
Сообщений: 203
27.10.2010, 17:09  [ТС]
Цитата Сообщение от petruchodd Посмотреть сообщение
in>>a;//
petruchodd, это дело не компилируется почему-то. так вот просто считать из файла в массив не получается.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.10.2010, 17:25
IrishaIrinaChe, а вы добавили в проект:
C++
1
#include <fstream.h>
?
0
 Аватар для IrishaIrinaChe
29 / 29 / 3
Регистрация: 23.09.2010
Сообщений: 203
27.10.2010, 17:40  [ТС]
MikeSoft, fstream подключён.

Добавлено через 7 минут
может, проблема в том, что я открываю файл через fopen?
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
27.10.2010, 17:58
Цитата Сообщение от IrishaIrinaChe Посмотреть сообщение
может, проблема в том, что я открываю файл через fopen?
да. если через fopen то будем немного по-другому...

а in это вообще из VC однако, попробуйте использовать аналоги cin/cout
или подключить iostream.h или io.h
вообще же для подсчитывания количества символов не обязательно загонять их в массив, тратить на это ресурсы, достаточно, например, просто прочитать файл посимвольно, инкрементируя счетчик.

в целом мне кажется развели слишком много шума из ничего, на подобные вопросы надо либо сразу посылать в faq и читать книжки либо отмалчиваться, чтобы человек сам призадумался...
0
 Аватар для IrishaIrinaChe
29 / 29 / 3
Регистрация: 23.09.2010
Сообщений: 203
27.10.2010, 18:02  [ТС]
я поняла. надо было использовать putc(). всем спасибо)
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
27.10.2010, 18:07
надо было использовать fgetc
0
 Аватар для IrishaIrinaChe
29 / 29 / 3
Регистрация: 23.09.2010
Сообщений: 203
27.10.2010, 18:26  [ТС]
AntonChik, с fgetс не компилировалось.
0
 Аватар для Mrak19901124
47 / 12 / 4
Регистрация: 25.02.2010
Сообщений: 259
09.11.2010, 12:15
Цитата Сообщение от MikeSoft Посмотреть сообщение
Sasha, ну тут два варианта...
1. Открыть файл и читать посимвольно. Когда встретится символ '\n' или '\r\n' инкрементировать переменную (количество строк).
Советую попробовать - набьёте руку в области работы с файлами.
2. А можно поступить так:
C++
1
2
3
4
5
TStringList *sl = new TStringList();
sl->LoadFromFile("D:\\text.txt");
ShowMessage(sl->Count);
delete sl;
sl = NULL;
Вариант для лентяев. Рекомендуется тем, у кого уже есть богатый опыт в программировании и есть куда более серъёзные задачи.
как sl потом перевести в переменную int? если это возможно.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
09.11.2010, 12:25
Цитата Сообщение от Mrak19901124 Посмотреть сообщение
как sl потом перевести в переменную int? если это возможно.
Ну вы даёте... sl - указатель на объект класса TStringList.
Я же явно на примере показал, что значение хранится в sl->Count (это и так целочисленный тип)
0
 Аватар для Mrak19901124
47 / 12 / 4
Регистрация: 25.02.2010
Сообщений: 259
09.11.2010, 12:28
согласен прощолкал ночь не спал (( глюки пригают TStringList в AnsiString как ?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
09.11.2010, 12:31
sl->Text - полный текст, без изменений.
sl->CommaText - текст, в котором строки разделены запятой.
sl->Strings[i] - отдельная строка (под номером i).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2010, 12:31
Помогаю со студенческими работами здесь

Посчитать количество символов, не являющихся пробелами
Задачу реализуйте двумя способами, используя операторы do…while. Задание: Вводится последовательность символов. Признак конца ввода –...

Посчитать количество символов в Memo, не используя Length
Как можно посчитать количество символов в memo не исполбзуя length

Посчитать количество символов в кажой строке файла.
Ребят, задание в название темы. Можете помочь ? Правила Заранее спасибо. Добавлено через 3 часа 7 минут В delphi можно же было...

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

Как посчитать количество дней между датами
Здравствуйте! Помогите пож. расчитать количество дней между двумя датами, которые вводятся в три поля Edit в формате dd.mm.yyyy. Пишу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru