Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/293: Рейтинг темы: голосов - 293, средняя оценка - 4.97
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99

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

11.12.2011, 17:05. Показов 56036. Ответов 32
Метки нет (Все метки)

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



C++
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;i<10;i++)
                k=i;
                
        };
        cout<<k;
    }
 
 
    system("PAUSE");
    return 0;
}
вопрос почему считает что в тестовом документе 0 символов?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.12.2011, 17:05
Ответы с готовыми решениями:

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

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

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

32
114 / 114 / 13
Регистрация: 29.04.2010
Сообщений: 240
11.12.2011, 18:22
C++
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++        
                };
                cout<<count;
        }
 
        system("PAUSE");
        return 0;
}
2
11.12.2011, 20:52

Не по теме:

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

1
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
14.12.2011, 10:15  [ТС]
Хм GetFileSize() не знаком, необходимо подчитать материал))))
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
14.12.2011, 10:24
Цитата Сообщение от DeadRipper Посмотреть сообщение

Не по теме:

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

В чистом Си есть еще filelegth.
Но оба они конец-перевод строки (0A 0D) считают за 2 символа.
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
14.12.2011, 10:34
Цитата Сообщение от Байт Посмотреть сообщение
В чистом Си есть еще filelegth.
Bash
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:~$
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
14.12.2011, 11:30
alkagolik, прошу прощения. Буковку пропустил. filelength

Добавлено через 1 минуту
Что вы совершенно справедливо отметили
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
14.12.2011, 11:32
Байт, это ерунда, я к тому что функция не Сишная, а вроде как DOS
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.12.2011, 11:34
Цитата Сообщение от PraZuBeR Посмотреть сообщение
C++
1
2
3
4
5
6
while(!f.eof()) 
{ 
   char ch; 
   f>>ch; 
   count++ 
};
такое чтение из файла может плохо кончится
C++
1
2
3
char ch;
while (f >> ch)
    ++count;
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2011, 12:00
А вот так
C
1
2
3
4
5
6
 
FILE * pFile;
long size;
 
fseek (pFile, 0, SEEK_END);
size = ftell (pFile);
Добавлено через 1 минуту
Только это для бинарных
0
14.12.2011, 12:22

Не по теме:

go, а символы '\n' будут один за два считаться? А если их вообще учитывать не надо.

0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
14.12.2011, 12:25
Thinker, нет. Символов как таковых нету, есть их коды.
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:27
Цитата Сообщение от alkagolik Посмотреть сообщение
Thinker, нет. Символов как таковых нету, есть их коды.
Это понятно. Вопрос как мы его учитывать будем или не будем. Тем более '\n' состоит из двух управляющих символов.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
14.12.2011, 12:27
Главное вовремя уловить разницу между размером файла в байтах и длиной текстового файла (количество печатных символов).
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
14.12.2011, 12:28
конечно будем. Учитывать как sizeof(char)
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:30
Цитата Сообщение от fasked Посмотреть сообщение
Главное вовремя уловить разницу между размером файла в байтах и длиной текстового файла (количество печатных символов).
Вот-вот, об этом я и говорю. Если в тексте нужно подсчитать количество отображаемых символов, то придется по нему пробежаться.

Добавлено через 52 секунды
Цитата Сообщение от alkagolik Посмотреть сообщение
конечно будем. Учитывать как sizeof(char)
тогда конструкция fseek() и ftell() не пройдут. Поэтому вариант от Jupiter как раз подойдет. Либо в Си

C
1
2
while (fgetc(f) != EOF)
   count++;
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
14.12.2011, 12:32
fgets(), strlen() - {2,1}
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:35
Цитата Сообщение от alkagolik Посмотреть сообщение
fgets(), strlen() - {2,1}
Что означает сия запись?)
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
14.12.2011, 12:40
Thinker, вендовые текстовые файлы в конце каждй строки содержат 2 управляющих символа, юниксовые - 1.
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2011, 12:44
Thinker, за два конечно, мы определяем размер файла в байтах

Цитата Сообщение от fasked Посмотреть сообщение
Главное вовремя уловить разницу между размером файла в байтах и длиной текстового файла (количество печатных символов).
Как известно, один символ занимает 1 байт памяти, соответственно размер файла = кол-во символов
А считать или не считать управляющие символы автор темы не оговаривал

Добавлено через 2 минуты
Цитата Сообщение от alkagolik Посмотреть сообщение
вендовые текстовые файлы в конце каждй строки содержат 2 управляющих символа,
Вы имеете ввиду 0x0d и 0x0a ?

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

Не по теме:

Цитата Сообщение от Thinker Посмотреть сообщение
while (fgetc(f) != EOF)
* *count++;
Ведь тоже символ '\n' за два символа посчитаем ;)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.12.2011, 12:44
Помогаю со студенческими работами здесь

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

В текстовом файле подсчитать количество символов и строк
Ребята! Помогите разобраться с файлами нужно - в текстовом файле. Подсчитать количество символов и строк в нём. Объясните как...

Подсчитать количество символов в последнем слове в файле
1) Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию 2) Скопировать из файла F1 в файл F2 строки,...

Дан текст, содержащий 30 символов. Подсчитать количество вхождений символов А и Б.
Ребят , помогите плиз , послезавтра экзамен , вот нашел возможные задание , может кто подсказать , или показать решения ? Язык : С++/...

В последовательности символов подсчитать количество букв и количество цифр
Всем Добрый Вечер!!!Помогите пожалуйста тупенькому =), очень надо. Заранее спс... 1. В последовательности символов подсчитать...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru