Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Hunger Cannibal
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 15
#1

Найти количество символов в текстовом файле (не считает пробелы) - C++

06.06.2013, 09:53. Просмотров 367. Ответов 6
Метки нет (Все метки)

Приветствую всех! Имеется следующая задача:
Напишите программу, которая открывает текстовый файл, читает его символ за символом до самого конца и сообщает количество символов в файле.
файл создал, в нём 42 символа, прогу написал, но она не хочет считать пробелы!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <fstream>
#include <cctype>
using namespace std;
int main()
{
    char ch;
    int symbol=0;
    ifstream inFile;
    inFile.open("test.txt");
    inFile >> ch;
    while (inFile.good())
        {
        ++symbol;
        inFile >> ch;
        }
    if (inFile.eof()) cout  << "Dostignut konec fayla!" << endl;
    cout << "Kolichestvo simvolov ravno " << symbol << endl;
    inFile.close();
    return 0;
}
isprint () и isbiank () работают почемуто неадекватно - isprint выдаёт 3 символа, isblank - 0 пробелов.
где ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 09:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти количество символов в текстовом файле (не считает пробелы) (C++):

Количество символов в текстовом файле - C++
Доброго почти утра вам=) Такой вопрос, можно ли определить длину текстового файла? Файл открыл через fopen, а теперь нужно присвоить...

посчитать количество символов в текстовом файле - C++
Как посчитать количество символов в текстовом файле?

Определить количество символов в данном текстовом файле - C++
Организовать текстовый файл состоящий из N строк.Определить количество символов в данном файле

Найти частоту появления символов в исходном текстовом файле - C++
Здравствуйте, возникли такие проблемы. Пишу на Visual C++ 2010. На первом этапе вывода текста из файла не получается его забить...

Найти количество строк в текстовом файле - C++
я не можу написати програму для підрахування кількості стрічок в текстовому файлі. чомусь в результаті видає 3 помилки, я пишу на Turbo...

В текстовом файле удалить пробелы - C++
Задача такая. Надо из текстового файла (создать его заранее и написать что нибудь из 2-3 предложений) извлечь все пробелы. НО! Главное...

6
VirchKS
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 6
06.06.2013, 10:21 #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
25
26
#include <iostream>
#include <fstream>
#include <cstdlib>
int main()
{
    std::ifstream inFile;
    std::string s;
    char str[40];
    int n,symbol=0;
    std::cout<<"Vvedite imja fajla: ";
    std::cin>>str;
    inFile.open(str);
    if (inFile.fail())
    {
        std::cout<<"Oshibka otkrytija fajla.";
        exit(1);
    }
    while(!inFile.eof())
    {
        getline(inFile,s);
        n=s.size();
        symbol=symbol+n;
    }
    std::cout<<"Kolichestvo simvolov ravno "<<symbol<<std::endl;
    inFile.close();
}
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
06.06.2013, 10:28 #3
Цитата Сообщение от Hunger Cannibal Посмотреть сообщение
isprint () и isbiank () работают почемуто неадекватно - isprint выдаёт 3 символа, isblank - 0 пробелов.
А где вообще вызов этих функций?
0
Hunger Cannibal
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 15
06.06.2013, 10:38  [ТС] #4
ну так убрал, потому что не работают ). было так:
C++
1
2
3
4
5
while (inFile.good())
        {
        if (isprint(ch)) ++symbol;
        inFile >> ch;
        }
выдавало 37 вместо 42

Добавлено через 7 минут
Цитата Сообщение от VirchKS Посмотреть сообщение
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
#include <iostream>
#include <fstream>
#include <cstdlib>
int main()
{
    std::ifstream inFile;
    std::string s;
    char str[40];
    int n,symbol=0;
    std::cout<<"Vvedite imja fajla: ";
    std::cin>>str;
    inFile.open(str);
    if (inFile.fail())
    {
        std::cout<<"Oshibka otkrytija fajla.";
        exit(1);
    }
    while(!inFile.eof())
    {
        getline(inFile,s);
        n=s.size();
        symbol=symbol+n;
    }
    std::cout<<"Kolichestvo simvolov ravno "<<symbol<<std::endl;
    inFile.close();
}
Спасибо, да работает, а где у меня ошибка не подскажите?
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
06.06.2013, 10:56 #5
Если нужно определить размер файла, то просто:
C++
1
2
ifstream file( "example.txt", ios::binary | ios::ate);
return file.tellg();
0
VirchKS
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 6
06.06.2013, 10:59 #6
Спасибо, да работает, а где у меня ошибка не подскажите?
inFile >> ch; не работает с пробелами, т. е. файл считывается по словам.
0
Hunger Cannibal
2 / 2 / 0
Регистрация: 17.04.2013
Сообщений: 15
06.06.2013, 11:03  [ТС] #7
Нет, в задании именно количество символов. А того, что вы написали я ещё не знаю.

Добавлено через 3 минуты
Цитата Сообщение от VirchKS Посмотреть сообщение
inFile >> ch; не работает с пробелами, т. е. файл считывается по словам.
Как всё просто. Нужно будет ещё почитать на эту тему ).
0
06.06.2013, 11:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2013, 11:03
Привет! Вот еще темы с ответами:

Заменить все пробелы в текстовом файле запятыми - C++
1. В текстовом файле записаны фразы, который отделены друг от друга точками, слова – пробелами и знаками препинаниями; заменить все пробелы...

В заданном текстовом файле превратить символы табуляции на пробелы - C++
В заданном текстовом файле превратить символы табуляции на пробелы . Для работы использовать библиотеку cstdio

Найти самое короткое слово в заданном текстовом файле и количество его повторений - C++
Дан код, который выводит самое короткое слово в заданном текстовом файле и считает кол-во повторений этого слова в тексте. Нужно сделать...

Написать функцию, заменяющую в текстовом файле все цифры и знаки “+” и “ - ” на пробелы - C++
1 Написать функцию, добавляющую литеру “с” в начало и конец текстового файла. 2 Написать функцию, заменяющую в текстовом файле все...


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

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

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