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

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

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

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

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

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

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

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

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

23
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
27.10.2010, 03:01 2
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
Эксперт С++
3954 / 1809 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.10.2010, 12:04 3
Лучший ответ Сообщение было отмечено как решение

Решение

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

Не по теме:

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

3
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
27.10.2010, 13:52 4
Ребята позвольте спросить ну а как, тогда посчитать количество строк в текстовом файле?
0
Эксперт С++
3954 / 1809 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.10.2010, 14:04 5
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 6
не нравится мне все это...
учитывая что sizeof(char) равен 1, ваши решения сводятся к частному случаю, к вычислению размера файла, и естественно в байтах, а не символах как таковых...
и раз уж мы говорим о текстовых(файлах) то отмазка про то что перевод строки занимает пару байт не принимается... постановка задачи намекает именно на печатные символы.
в общем исправляйтесь, господа.
p.s. + не забывайте про юникод и т.д.
0
Эксперт С++
3954 / 1809 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
27.10.2010, 14:42 7
Цитата Сообщение от AntonChik Посмотреть сообщение
учитывая что sizeof(char) равен 1, ваши решения сводятся к частному случаю
Частный случай называется "однобайтовое представление символов".

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

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

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

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

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

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

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

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

в целом мне кажется развели слишком много шума из ничего, на подобные вопросы надо либо сразу посылать в faq и читать книжки либо отмалчиваться, чтобы человек сам призадумался...
0
29 / 29 / 3
Регистрация: 23.09.2010
Сообщений: 203
27.10.2010, 18:02  [ТС] 14
я поняла. надо было использовать putc(). всем спасибо)
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
27.10.2010, 18:07 15
надо было использовать fgetc
0
29 / 29 / 3
Регистрация: 23.09.2010
Сообщений: 203
27.10.2010, 18:26  [ТС] 16
AntonChik, с fgetс не компилировалось.
0
47 / 12 / 4
Регистрация: 25.02.2010
Сообщений: 259
09.11.2010, 12:15 17
Цитата Сообщение от 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
Эксперт С++
3954 / 1809 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
09.11.2010, 12:25 18
Цитата Сообщение от Mrak19901124 Посмотреть сообщение
как sl потом перевести в переменную int? если это возможно.
Ну вы даёте... sl - указатель на объект класса TStringList.
Я же явно на примере показал, что значение хранится в sl->Count (это и так целочисленный тип)
0
47 / 12 / 4
Регистрация: 25.02.2010
Сообщений: 259
09.11.2010, 12:28 19
согласен прощолкал ночь не спал (( глюки пригают TStringList в AnsiString как ?
0
Эксперт С++
3954 / 1809 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
09.11.2010, 12:31 20
sl->Text - полный текст, без изменений.
sl->CommaText - текст, в котором строки разделены запятой.
sl->Strings[i] - отдельная строка (под номером i).
0
09.11.2010, 12:31
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2010, 12:31
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C#
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru