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

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

  • автор:

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

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

Добавлено через 31 минуту
Разобрался.

1 2 3
char ch[250]; gets(ch); dlina = strlen(ch)

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

Программа, подсчитыващая количество символов с одинаковыми кодами ASCII в текстовом файле (Linux)
(для чтения иди записи-функции (f)gets(), (f)puts()) Программа, подсчитыващая количество символов.

Подсчитать количество сдвоенных символов «сс», «нн», «лл» в тексте, расположенном в текстовом файле
Пожалуйста) Подсчитать количество сдвоенных символов сс, нн, лл в тексте, расположенном в текстовом.

В программе реализовать подсчет символов в текстовом файле
В программе реализовать подсчет символов в текстовом файле. Вывести на экран 5 наиболее часто.

Посчитать, сколько в файле текстовом строчек, символов и слов
Ребята нужна ваша помощь я написал код а у меня. Непалу чается cделать как надо не знаю что еще.

Эксперт С++

3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526

ЦитатаСообщение от rustock Посмотреть сообщение

как узнать кол-во символов в текстовом файле?
Это размер файла. С помощью fseek.
Регистрация: 29.11.2010
Сообщений: 154

ЦитатаСообщение от go Посмотреть сообщение

Это размер файла. С помощью fseek.
Спасибо. Оставлю как вариант. Но gets() пользоваться гораздо проще.

Эксперт С++

3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526

Лучший ответ

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

Решение

ЦитатаСообщение от rustock Посмотреть сообщение

Но gets() пользоваться гораздо проще.

С ним придется в цикле работать, так как размер буфера зачастую меньше размера файла.

Добавлено через 3 минуты
Вот как вариант

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/* ftell example : getting size of a file */ #include int main (мщшв) { FILE * pFile; long size; pFile = fopen("myfile.txt", "rb"); if ( !pFile ) perror("Error opening file"); else { fseek (pFile, 0, SEEK_END); size = ftell(pFile); fclose(pFile); printf("Size of myfile.txt: %ld bytes.\n", size); } return 0; }

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

ЦитатаСообщение от go Посмотреть сообщение

Вот как вариант [
Что есть 0 и SEEK_END в fseek (pFile, 0, SEEK_END)?
от 0 до конца?

Эксперт С++

3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526

ЦитатаСообщение от rustock Посмотреть сообщение

Это константа.

ЦитатаСообщение от rustock Посмотреть сообщение

от 0 до конца?

Нет. Это значит, что Отступить 0 байт от конца.

Добавлено через 25 секунд
По сути переместить курсор в конец файла.

Добавлено через 2 минуты

ЦитатаСообщение от go Посмотреть сообщение

Это константа.
Как правило, равна 2.
2833 / 1642 / 254
Регистрация: 03.12.2007
Сообщений: 4,222

ЦитатаСообщение от go Посмотреть сообщение

1 2 3
pFile = fopen("myfile.txt", "rb"); . fseek (pFile, 0, SEEK_END);

SEEK_END для binary файла — undefined behaviour.
http://www.open-std.org/jtc1/s. /n1256.pdf

Цитата

Сообщение от 7.19.2.3

A binary stream is an ordered sequence of characters that can transparently record
internal data. Data read in from a binary stream shall compare equal to the data that were
earlier written out to that stream, under the same implementation. Such a stream may,
however, have an implementation-defined number of null characters appended to the end
of the stream.

Цитата

Сообщение от 7.19.3

234) Setting the file position indicator to end-of-file, as with fseek(file, 0, SEEK_END), has
undefined behavior for a binary stream (because of possible trailing null characters) or for any stream
with state-dependent encoding that does not assuredly end in the initial shift state.

Регистрация: 29.11.2010
Сообщений: 154
Спасибо за ответы!

Эксперт С++

3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526

ЦитатаСообщение от Somebody Посмотреть сообщение

SEEK_END для binary файла — undefined behaviour.
Всеж таки задание читать нужно

ЦитатаСообщение от rustock Посмотреть сообщение

как узнать кол-во символов в текстовом файле?
2833 / 1642 / 254
Регистрация: 03.12.2007
Сообщений: 4,222

Тогда надо открывать файл как текстовый. Но в этом случае ftell — это некоторая позиция, которую можно использовать в fseek, но не количество символов. C99:

Цитата

Сообщение от 7.19.2.2

A text stream is an ordered sequence of characters composed into lines, each line
consisting of zero or more characters plus a terminating new-line character. Whether the
last line requires a terminating new-line character is implementation-defined. Characters
may have to be added, altered, or deleted on input and output to conform to differing
conventions for representing text in the host environment. Thus, there need not be a oneto-
one correspondence between the characters in a stream and those in the external
representation.
Data read in from a text stream will necessarily compare equal to the data
that were earlier written out to that stream only if: the data consist only of printing
characters and the control characters horizontal tab and new-line; no new-line character is
immediately preceded by space characters; and the last character is a new-line character.
Whether space characters that are written out immediately before a new-line character
appear when read in is implementation-defined.

И даже если это скорее всего получится как раз количество символов в файле, теоретически может быть и что-то другое.

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

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

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

Функция while(f. eof() ) насколько я помню обозначает сделать то то пока не будет конец файла. Я ввел счетчик ,что бы узнать сколько символов в файле. Который час пробую разные варианты. Подскажите функцию что бы определить количество символов.

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
int _tmain(int argc, _TCHAR* argv[]) { char a[10]; int k=0; ifstream f("siz.txt"); if(!f) { cout"can't open file \n"; } else { cout"open file\n"; while(!f.eof()) { int k=0; for(int i=0;i10;i++) k=i; }; coutk; } system("PAUSE"); return 0; }

вопрос почему считает что в тестовом документе 0 символов?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Подсчитать количество символов в файле
Есть программа которая выводит содержимое файла, помогите доработать так, чтобы вместе с содержимым.

Подсчитать количество символов в файле
Подсчитать количество символов в файле. Символы с кодами ≤ 32, управляющие и пробелы не.

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

Подсчитать количество символов в файле
Здравствуйте, Имеется такая задачка : 1)Создать текстовый файл F1 не менее, чем из 10 строк и.

114 / 114 / 13
Регистрация: 29.04.2010
Сообщений: 240

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
int _tmain(int argc, _TCHAR* argv[]) { char a[10]; int count = 0; ifstream f("siz.txt"); if(!f) { cout"can't open file \n"; } else { cout"open file\n"; while(!f.eof()) { char ch; f>>ch; count++ }; coutcount; } system("PAUSE"); return 0; }

@ DeadRipper

Novij, надеюсь ты на деле так считать не собираешься? GetFileSize() из WinApi намного быстрее

Меню пользователя @ DeadRipper

Регистрация: 12.12.2010
Сообщений: 99
Хм GetFileSize() не знаком, необходимо подчитать материал))))

Эксперт C

27695 / 17314 / 3809
Регистрация: 24.12.2010
Сообщений: 38,979

ЦитатаСообщение от DeadRipper Посмотреть сообщение

Novij, надеюсь ты на деле так считать не собираешься? GetFileSize() из WinApi намного быстрее

В чистом Си есть еще filelegth.
Но оба они конец-перевод строки (0A 0D) считают за 2 символа.
Заблокирован

ЦитатаСообщение от Байт Посмотреть сообщение

В чистом Си есть еще filelegth.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
deadman@desktop:~$ man filelegth Нет справочной страницы для filelegth deadman@desktop:~$ man filelength Нет справочной страницы для filelength deadman@desktop:~$ find /usr/include -name io.h /usr/include/wine/msvcrt/io.h /usr/include/sys/io.h deadman@desktop:~$ cat /usr/include/sys/io.h | grep filelength deadman@desktop:~$ cat /usr/include/sys/io.h | grep filelegth deadman@desktop:~$ cat /usr/include/wine/msvcrt/io.h | grep filelegth deadman@desktop:~$ cat /usr/include/wine/msvcrt/io.h | grep filelength __int64 __cdecl _filelengthi64(int); __msvcrt_long __cdecl _filelength(int); static inline __msvcrt_long filelength(int fd) { return _filelength(fd); } deadman@desktop:~$

Эксперт C

27695 / 17314 / 3809
Регистрация: 24.12.2010
Сообщений: 38,979

alkagolik, прошу прощения. Буковку пропустил. filelength

Добавлено через 1 минуту
Что вы совершенно справедливо отметили

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

Профиль
Группа: Участник
Сообщений: 10
Регистрация: 22.4.2010

Репутация: нет
Всего: нет

Здравствуйте,
Имеется такая задачка :
1)Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию
Выполнить задание.
2)Скопировать в файл F2 только те строки из F1, которые начинаются и заканчиваются на одну и ту же букву.
3)Подсчитать количество символов в F2.

вот моё решение 2 пунктов, не знаю(3 пункт) как подсчитать количество символов в файле F2?

Код
#include
#include
#include
using namespace std;
int main(int argc, char *argv[])
ifstream filename(«f1.txt»);

ofstream filename_2(«f2.txt»);
if ( !filename.is_open() || !filename_2.is_open() ) return 1;
string str;
while( getline( filename, str ))
if( *str.begin() == *(str.end()-1))
filename_2

Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 2
Всего: 13

Код
size_t FileSize()
ifstream file(«2.txt»);
size_t size;
for(size=0;!file.eof();size++)
file.get();
file.clear();
file.close();
return size-1;
>

Добавлено @ 13:07
и файлы закрывать не забывайте

Код
close.filename();
close.filename_2();

Это сообщение отредактировал(а) toxx — 23.4.2010, 13:08

Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39

Код
int fileSize(char const *fname)FILE *f=fopen(fname,»r»);
int res=fseek(f,0,SEEK_END);
fclose(f);
return res;>

А еще лучше воспользоваться системными функциями вроде fstat.

‘Cuz I never walk away from what I know is right
Alice Cooper — Freedom

Профиль
Группа: Участник
Сообщений: 10
Регистрация: 22.4.2010

Репутация: нет
Всего: нет

toxx, djamshud огромное спасибо!

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!

  • Название темы должно отражать её суть! (Не следует добавлять туда слова «помогите», «срочно» и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например «школьная задача», «задача из учебника» и т.п.), не нужно указывать ее сложность («простая задача», «легкий вопрос» и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку «Код»). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик — один вопрос!
  • В данном разделе запрещено поднимать темы , т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой «Пометить как решённый», которая находится под кнопками создания темы или специальным флажком при ответе.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »

[ Время генерации скрипта: 0.1132 ] [ Использовано запросов: 21 ] [ GZIP включён ]

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

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