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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 87, средняя оценка - 4.68
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
11.12.2011, 17:05     Подсчитать количество символов в файле #1
Функция 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 символов?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:45     Подсчитать количество символов в файле #21
Цитата Сообщение от go Посмотреть сообщение

Не по теме:


Ведь тоже символ '\n' за два символа посчитаем

Не по теме:

Почему? за 1 символ

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 12:48     Подсчитать количество символов в файле #22
угу 5 букв

Добавлено через 1 минуту
Цитата Сообщение от go Посмотреть сообщение
Ведь тоже символ '\n' за два символа посчитаем
это еще почему?
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
14.12.2011, 12:54     Подсчитать количество символов в файле #23
В Linux за два, в Windows за один.
go
14.12.2011, 13:02
  #24

Не по теме:

Цитата Сообщение от alkagolik Посмотреть сообщение
это еще почему?
Странно это все...

Цитата Сообщение от Thinker Посмотреть сообщение
Правда?
Не знаю

alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 13:07     Подсчитать количество символов в файле #25
Цитата Сообщение от fasked Посмотреть сообщение
В Linux за два, в Windows за один
Код
deadman@desktop:~$ cat > file.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

main(void)
{
    FILE * fp;
    char * line = NULL;
    int cnt = 0;
    size_t len = 0;
    ssize_t read;

    fp = fopen("/home/deadman/file.txt", "r");
    if (fp == NULL)
        exit(EXIT_FAILURE);

    while ((read = getline(&line, &len, fp)) != -1)
    {
        printf("%s", line);
        cnt += strlen(line) - 1;
    }
    printf("%i\n", cnt);

    if (line)
        free(line);
    exit(EXIT_SUCCESS);
}deadman@desktop:~$ gcc file.c 
deadman@desktop:~$ ./a.out 
123456
123456
123456
123456
24
Добавлено через 1 минуту
как видно за 1 в линукс

Добавлено через 2 минуты
Цитата Сообщение от wiki{управляющие символы}
В CP/M, MS-DOS и Microsoft Windows для разделения строк в текстовых файлах используется сочетание символов \r\n.
Цитата Сообщение от wiki{управляющие символы}
Перемещает позицию печати на одну строку вниз. В текстовых файлах в Unix разделяет строки.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
14.12.2011, 13:10     Подсчитать количество символов в файле #26
Цитата Сообщение от alkagolik Посмотреть сообщение
как видно за 1 в линукс
HEX dump файла /home/deadman/file.txt в студию.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 13:15     Подсчитать количество символов в файле #27
0000000 3231 3433 3635 310a 3332 3534 0a36 3231
0000010 3433 3635 310a 3332 3534 0a36
000001c
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
14.12.2011, 13:16     Подсчитать количество символов в файле #28
alkagolik, ой что-то не вижу я здесь виндовского перевода строки, который из двух байт состоит. Вижу только юниксовый 0x0A.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 13:19     Подсчитать количество символов в файле #29
fasked, я уже и не помню как венда выглядит... Вы видимо оговорились.
Цитата Сообщение от fasked Посмотреть сообщение
В Linux за два, в Windows за один.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
14.12.2011, 13:29     Подсчитать количество символов в файле #30
Цитата Сообщение от alkagolik Посмотреть сообщение
Вы видимо оговорились.
То есть других аргументов у Вас нет?
Виндовской перевод строки в Linux будет посчитан за два символа, а в Windows за один. Ясен пень, что никсовый перевод строки будет в никсах же за один символ считаться. В никсах вообще разницы между бинарными и текстовыми файлами нет. Потому и размер файла будет равен количеству символов в нем. В форточках разница есть.

Не по теме:

Тред не читай @ Сразу отвечай.



Добавлено через 7 минут
Прикладываю к своим словам гневный пример убеждений
Код
fasked@nexus:/tmp$ printf "abcd\x0D\x0Aabcd\n" >> file
fasked@nexus:/tmp$ cat file
abcd
abcd
fasked@nexus:/tmp$ wc -m file
11 file
fasked@nexus:/tmp$ hd file
00000000  61 62 63 64 0d 0a 61 62  63 64 0a                 |abcd..abcd.|
0000000b
fasked@nexus:/tmp$ cat a.c
#include <stdio.h>

int main() {
   int count = 0;
   while (fgetc(stdin) != EOF)
      ++count;

   printf("%d\n", count);
   return 0;
}
fasked@nexus:/tmp$ gcc a.c
fasked@nexus:/tmp$ ./a.out < file
11
В котором я визуально вижу только два перевода строки, но тем не менее символов что wc что собственный велосипед насчитывают 11 штук.

У кого винда есть, проверьте сколько символов насчитает в идентичном по hex-dump файле?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 13:42     Подсчитать количество символов в файле #31
вендовый файел в юниксе... дык ясно что. Это и означает strlen() - {2, 1}. Вы же не уточнили что говорите про случай чтения вендузного файла в юниксе. Отсюда и непонятка. А это что за такой суржик? "abcd\x0D\x0Aabcd\n" полуюникс - полувиндуз.

Добавлено через 2 минуты
Цитата Сообщение от fasked Посмотреть сообщение
В котором я визуально вижу только два перевода строки
Цитата Сообщение от alkagolik Посмотреть сообщение
В CP/M, MS-DOS и Microsoft Windows для разделения строк в текстовых файлах используется сочетание символов \r\n.
Цитата Сообщение от fasked Посмотреть сообщение
Тред не читай @ Сразу отвечай.

либо вы меня за выскочку держите, либо просто непонимаете, либо неясно выражаетесь. Я об этом уже неоднажды в топике сказал. Про разные управляющие символы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 14:34     Подсчитать количество символов в файле
Еще ссылки по теме:

Дан текст, содержащий 30 символов. Подсчитать количество вхождений символов А и Б. C++
Подсчитать количество слов в текстовом файле C++
C++ Подсчитать количество чисел в файле

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

Или воспользуйтесь поиском по форуму:
Alligieri
CEO
Эксперт C++
 Аватар для Alligieri
2246 / 1235 / 24
Регистрация: 16.03.2009
Сообщений: 3,581
14.12.2011, 14:34     Подсчитать количество символов в файле #32
fasked, с вычетом пробела который пришлось добавить после \x0A (ато воспринимало как нелегитимный символ) в Windows Seven Enterprise x64 - 11 символов
Yandex
Объявления
14.12.2011, 14:34     Подсчитать количество символов в файле
Ответ Создать тему
Опции темы

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