Узнать количество символов в текстовом файле
Нужно сосчитать массив из символов, но их кол-во неизвестно. Как узнать? Как-нибудь можно подругому сосчитать символы, в файле? Обязательно нужен массив, а не строковая переменная т.к. идет сравнение одного символа с последующими.
Добавлено через 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() не знаком, необходимо подчитать материал))))
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:~$
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 включён ]