Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 87, средняя оценка - 4.68
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
#1

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

11.12.2011, 17:05. Просмотров 11337. Ответов 31
Метки нет (Все метки)

Функция 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 символов?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 17:05     Подсчитать количество символов в файле
Посмотрите здесь:

C++ Подсчитать количество символов в файле
C++ В последовательности символов подсчитать количество букв и количество цифр
Подсчитать количество подстрок в текстовом файле C++
Подсчитать количество символов в файле C++
Подсчитать количество чисел в загружаемом файле C++
Подсчитать количество пробелов в файле C++
Дан текст, содержащий 30 символов. Подсчитать количество вхождений символов А и Б. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
11.12.2011, 18:22     Подсчитать количество символов в файле #2
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;
}
DeadRipper
11.12.2011, 20:52
  #3

Не по теме:

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

Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
14.12.2011, 10:15  [ТС]     Подсчитать количество символов в файле #4
Хм GetFileSize() не знаком, необходимо подчитать материал))))
Байт
Эксперт C
15254 / 9656 / 1432
Регистрация: 24.12.2010
Сообщений: 17,984
14.12.2011, 10:24     Подсчитать количество символов в файле #5
Цитата Сообщение от DeadRipper Посмотреть сообщение

Не по теме:

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

В чистом Си есть еще filelegth.
Но оба они конец-перевод строки (0A 0D) считают за 2 символа.
alkagolik
1511 / 617 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 10:34     Подсчитать количество символов в файле #6
Цитата Сообщение от Байт Посмотреть сообщение
В чистом Си есть еще 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:~$
Байт
Эксперт C
15254 / 9656 / 1432
Регистрация: 24.12.2010
Сообщений: 17,984
14.12.2011, 11:30     Подсчитать количество символов в файле #7
alkagolik, прошу прощения. Буковку пропустил. filelength

Добавлено через 1 минуту
Что вы совершенно справедливо отметили
alkagolik
1511 / 617 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 11:32     Подсчитать количество символов в файле #8
Байт, это ерунда, я к тому что функция не Сишная, а вроде как DOS
Jupiter
Каратель
Эксперт C++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.12.2011, 11:34     Подсчитать количество символов в файле #9
Цитата Сообщение от 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;
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2011, 12:00     Подсчитать количество символов в файле #10
А вот так
C
1
2
3
4
5
6
 
FILE * pFile;
long size;
 
fseek (pFile, 0, SEEK_END);
size = ftell (pFile);
Добавлено через 1 минуту
Только это для бинарных
Thinker
14.12.2011, 12:22
  #11

Не по теме:

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

alkagolik
1511 / 617 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 12:25     Подсчитать количество символов в файле #12
Thinker, нет. Символов как таковых нету, есть их коды.
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:27     Подсчитать количество символов в файле #13
Цитата Сообщение от alkagolik Посмотреть сообщение
Thinker, нет. Символов как таковых нету, есть их коды.
Это понятно. Вопрос как мы его учитывать будем или не будем. Тем более '\n' состоит из двух управляющих символов.
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
14.12.2011, 12:27     Подсчитать количество символов в файле #14
Главное вовремя уловить разницу между размером файла в байтах и длиной текстового файла (количество печатных символов).
alkagolik
1511 / 617 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 12:28     Подсчитать количество символов в файле #15
конечно будем. Учитывать как sizeof(char)
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:30     Подсчитать количество символов в файле #16
Цитата Сообщение от fasked Посмотреть сообщение
Главное вовремя уловить разницу между размером файла в байтах и длиной текстового файла (количество печатных символов).
Вот-вот, об этом я и говорю. Если в тексте нужно подсчитать количество отображаемых символов, то придется по нему пробежаться.

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

C
1
2
while (fgetc(f) != EOF)
   count++;
alkagolik
1511 / 617 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 12:32     Подсчитать количество символов в файле #17
fgets(), strlen() - {2,1}
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:35     Подсчитать количество символов в файле #18
Цитата Сообщение от alkagolik Посмотреть сообщение
fgets(), strlen() - {2,1}
Что означает сия запись?)
alkagolik
1511 / 617 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 12:40     Подсчитать количество символов в файле #19
Thinker, вендовые текстовые файлы в конце каждй строки содержат 2 управляющих символа, юниксовые - 1.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 12:44     Подсчитать количество символов в файле
Еще ссылки по теме:

Подсчитать количество слов в текстовом файле C++
C++ Подсчитать количество чисел в файле
Подсчитать количество символов в последнем слове в файле C++
C++ Подсчитать количество гласных в файле
C++ Подсчитать количество символов в файле

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3585 / 1365 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2011, 12:44     Подсчитать количество символов в файле #20
Thinker, за два конечно, мы определяем размер файла в байтах

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

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

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

Не по теме:

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

Yandex
Объявления
14.12.2011, 12:44     Подсчитать количество символов в файле
Ответ Создать тему
Опции темы

Текущее время: 18:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru