С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.78/85: Рейтинг темы: голосов - 85, средняя оценка - 4.78
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
1

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

11.12.2011, 17:05. Просмотров 16537. Ответов 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 символов?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 17:05
Ответы с готовыми решениями:

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

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

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

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

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

31
prazuber
111 / 111 / 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
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
14.12.2011, 10:15  [ТС] 4
Хм GetFileSize() не знаком, необходимо подчитать материал))))
0
Байт
Эксперт C
19236 / 12359 / 2609
Регистрация: 24.12.2010
Сообщений: 25,468
14.12.2011, 10:24 5
Цитата Сообщение от DeadRipper Посмотреть сообщение

Не по теме:

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

В чистом Си есть еще filelegth.
Но оба они конец-перевод строки (0A 0D) считают за 2 символа.
0
alkagolik
Заблокирован
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
19236 / 12359 / 2609
Регистрация: 24.12.2010
Сообщений: 25,468
14.12.2011, 11:30 7
alkagolik, прошу прощения. Буковку пропустил. filelength

Добавлено через 1 минуту
Что вы совершенно справедливо отметили
0
alkagolik
Заблокирован
14.12.2011, 11:32 8
Байт, это ерунда, я к тому что функция не Сишная, а вроде как DOS
0
Jupiter
Каратель
Эксперт С++
6570 / 3991 / 400
Регистрация: 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;
1
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
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
alkagolik
Заблокирован
14.12.2011, 12:25 12
Thinker, нет. Символов как таковых нету, есть их коды.
0
Thinker
Эксперт С++
4234 / 2208 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:27 13
Цитата Сообщение от alkagolik Посмотреть сообщение
Thinker, нет. Символов как таковых нету, есть их коды.
Это понятно. Вопрос как мы его учитывать будем или не будем. Тем более '\n' состоит из двух управляющих символов.
0
fasked
Эксперт С++
4984 / 2563 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.12.2011, 12:27 14
Главное вовремя уловить разницу между размером файла в байтах и длиной текстового файла (количество печатных символов).
0
alkagolik
Заблокирован
14.12.2011, 12:28 15
конечно будем. Учитывать как sizeof(char)
0
Thinker
Эксперт С++
4234 / 2208 / 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
alkagolik
Заблокирован
14.12.2011, 12:32 17
fgets(), strlen() - {2,1}
0
Thinker
Эксперт С++
4234 / 2208 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:35 18
Цитата Сообщение от alkagolik Посмотреть сообщение
fgets(), strlen() - {2,1}
Что означает сия запись?)
0
alkagolik
Заблокирован
14.12.2011, 12:40 19
Thinker, вендовые текстовые файлы в конце каждй строки содержат 2 управляющих символа, юниксовые - 1.
1
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 12:44

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru