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

Обновлено: 04.07.2024


сообщить об этом объявлении

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

  • Строки всегда заканчивались символом новой строки ("\n").
  • Слова могут заканчиваться пробелом или табуляцией. И он также завершается, когда появляется символ новой строки, то есть всякий раз, когда завершается одна строка, завершается и одно слово.

Процедура разработки программы,

1) Прочитайте строку. (Поскольку он может содержать несколько строк, напишите соответствующую логику).
2) Возьмите три переменные для подсчета: строка=0, слово=0, ch=0.
3) Читать символы один за другим до конца .
4) Если это символ новой строки ('\n'), то завершается одна строка и одно слово. Увеличьте переменные строки и слова.
5) Если это пробел или табуляция, то одно слово завершается одним символом. Обновите эти переменные.
6) В противном случае это обычный символ, обновите только переменную ch.
7) Наконец, отобразите значение переменных count.

Вывод:-

Введите строку, заканчивающуюся ~ :
Привет, как дела?
Добро пожаловать в мир программирования.
Программирование — это весело.
~
Количество символов = 71
Количество слов = 12
Количество строк = 3

В этой программе на языке C для подсчета строк, слов и символов в заданном тексте или строке мы получаем ввод от пользователя с помощью завершающей тильды (~). Мы используем это, потому что пользователь может ввести более одной строки. Строки заканчиваются символом «\n». Итак, программа принимает ввод (всего до 200 размеров) до тех пор, пока пользователь не введет ~. Когда программа встречает ~, она прекращает чтение со стандартного ввода. Существуют разные способы чтения многострочных строк, см. здесь.

Использование цикла for и вложенного if-else проверяет каждый символ. Если символ пробел или табуляция, то ранее было слово. Точно так же строка заканчивается символом «\n». Наконец, для данных входных данных мы получили количество символов = 71, количество слов = 12 и количество строк = 3.

Если вам понравился этот пост, поделитесь им с друзьями. Вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше, или вы нашли что-то неправильное? Дайте нам знать об этом в комментариях. Спасибо!


сообщить об этом объявлении

отправьте свою статью

Сегодня мы обсудим один из самых распространенных вопросов о строках, которые задают на собеседованиях и раундах кодирования во многих компаниях. Чаще всего этот вопрос часто задают в подразделах, но сегодня мы столкнемся со всеми подразделами этого вопроса.

В конце строки есть нулевой символ ( '\0' ). Он имеет нулевое числовое значение и может использоваться для представления конца строки символов, например слова или фразы. Это помогает нам определить длину строк.

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

Пример случая

Ввод: Ананд Сагар
Волейболист
Вывод: Общее количество слов: 4
Общее количество строк: 2
Общее количество символов: 26

Итак, в приведенном выше примере ввода есть 4 слова, 2 строки и 26 символов

Подход

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

Мы будем увеличивать счетчик слов каждый раз, когда встречаем пробел или новую строку. Мы будем увеличивать счетчик новой строки каждый раз, когда сталкиваемся с вводом новой строки ( ' \n '), а во всех остальных случаях мы будем увеличивать счетчик символов.

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

<р>1. Мы должны увеличивать количество слов каждый раз, когда появляется новая строка, потому что новая строка начинается с нового слова.
2. Для последнего слова строки нет места, поэтому, если внутри строки более 1 символа, мы должны увеличить счетчик слов на 1 в конце.
3. Если количество символов больше 1, то мы должны увеличить счетчик новой строки на 1, потому что строка начинается со строки 1, и у нас есть счетчик, поскольку для первой строки нет ввода новой строки.

Алгоритм

<р>1. Возьмите строку в качестве входных данных и сохраните ее в массиве символов.
2.Создайте 3 переменные-счетчика для подсчета слов, строк и символов в строке.
3. Использование цикла for находит пробел в строке и последовательно увеличивает значение переменной count для слов.
4. Использование цикла for для поиска следующей строки '\n' в строке и последовательное увеличение переменной count для следующей строки.
5. Использование цикла for ищет символы, кроме пробела и новой строки в строке, и последовательно увеличивает переменную count для символов.
6. Повторяйте шаги 3, 4, 5, пока петля не достигнет конца строки.
7. Проверьте наличие угловых случаев (описанных выше) и выполните соответствующие действия.
8. Вывести все значения счетчика.

На вход возьмем массив символов размером 100. Это зависит от программиста и необходимости проблемы.

Должно быть, у вас в голове возникла мысль о том, как мы можем быть настолько уверены, что ввод будет содержать ровно 100 символов, так что да, мы не уверены в этом, и чтобы справиться с этим, мы собираемся использовать
сканф с форматированием. Мы будем сканировать такие символы, как этот scanf("%[^~]",str[i]) . Позвольте мне объяснить его преимущества и использование.
Итак, '^' — это оператор каретки. Это помогает игнорировать конкретного оператора. Итак, теперь наш scanf будет принимать ввод до тех пор, пока пользователь не нажмет '~'.
Например, scanf[^\n] принимает все символы до тех пор, пока не встретится символ новой строки. Итак, пусть входная строка «Hello World». scanf("%s",&str) сохранит "Hello" в строке str, так как по умолчанию строка заканчивается пробелом. scanf("%[^\n]",&str) сохранит "Hello World" в строке str, так как теперь ввод строки захватывается до тех пор, пока не встретится новая строка.
Таким образом, таким образом пользователь может вводить данные в соответствии с размером, который он хочет, и когда пользователь закончит, мы можем попросить его ввести «~» после завершения ввода.​

Ввод: Дипак Кумар
брат Адитьи Кумара~
Вывод: Общее количество слов: 8
Общее количество строк: 2
Общее количество символов: 36

Анализ сложности

Поскольку мы повторяли до конца строки, временная сложность этого подхода будет $O ( n )$, где n — длина строки, а пространственная сложность этой программы будет $O(1)$.

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

Читайте также: