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

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

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

Author24 — интернет-сервис помощи студентам
Функция 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2011, 17:05
Ответы с готовыми решениями:

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

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

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

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

32
114 / 114 / 13
Регистрация: 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;
}
2
DeadRipper
11.12.2011, 20:52
  #3

Не по теме:

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

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

Не по теме:

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

В чистом Си есть еще filelegth.
Но оба они конец-перевод строки (0A 0D) считают за 2 символа.
0
Заблокирован
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:~$
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
14.12.2011, 11:30 7
alkagolik, прошу прощения. Буковку пропустил. filelength

Добавлено через 1 минуту
Что вы совершенно справедливо отметили
0
Заблокирован
14.12.2011, 11:32 8
Байт, это ерунда, я к тому что функция не Сишная, а вроде как DOS
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
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;
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
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 минуту
Только это для бинарных
0
Thinker
14.12.2011, 12:22
  #11

Не по теме:

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

0
Заблокирован
14.12.2011, 12:25 12
Thinker, нет. Символов как таковых нету, есть их коды.
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:27 13
Цитата Сообщение от alkagolik Посмотреть сообщение
Thinker, нет. Символов как таковых нету, есть их коды.
Это понятно. Вопрос как мы его учитывать будем или не будем. Тем более '\n' состоит из двух управляющих символов.
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
14.12.2011, 12:27 14
Главное вовремя уловить разницу между размером файла в байтах и длиной текстового файла (количество печатных символов).
0
Заблокирован
14.12.2011, 12:28 15
конечно будем. Учитывать как sizeof(char)
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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++;
0
Заблокирован
14.12.2011, 12:32 17
fgets(), strlen() - {2,1}
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:35 18
Цитата Сообщение от alkagolik Посмотреть сообщение
fgets(), strlen() - {2,1}
Что означает сия запись?)
0
Заблокирован
14.12.2011, 12:40 19
Thinker, вендовые текстовые файлы в конце каждй строки содержат 2 управляющих символа, юниксовые - 1.
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.12.2011, 12:44 20
Thinker, за два конечно, мы определяем размер файла в байтах

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

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

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

Не по теме:

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

0
14.12.2011, 12:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2011, 12:44
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru