Как найти количество букв в файле c

C++ provides you with a simple set of functions you can use to retrieve the size of stream segment.

In your case, we want to find the file end, which can be done by using fstream::seekg, and providing the fstream::end.

note that fstream is not implementing the end iterator overload, this is it’s own end constant

When we’ve seeked towards the end of the file, we want to get the position of the stream pointer, using tellg (also known as the character count in our case).

But we’re not done yet. We need to also set the stream pointer to its original position, otherwise we’ll be reading from the end of the file. Something we don’t want to do.

So lets call fstream::seekg again, but this time set the position to the begining of the file using fstream::beg

std::ifstream stream(filepath);

//Seek to end of opened file
stream.seekg(0, stream.end); 
int size = stream.tellg();

//reset file pointer to the beginning of the file
stream.seekg(0, stream.beg);

как узнать количество символов в файле c#

задан 6 июл 2016 в 16:12

whoami's user avatar

3

Что бы не загружать весь файл целиком в память можно так:

var charCount = 0;
using (var reader = new StreamReader(@"path_to_file", detectEncodingFromByteOrderMarks: true))
{
    while (reader.Read() > -1)
    {
        charCount++;
    }
}

ответ дан 6 июл 2016 в 17:08

Евгений's user avatar

ЕвгенийЕвгений

1,1916 серебряных знаков16 бронзовых знаков

4

Читаем файл (по умолчанию, кодировка UTF-8):

var txt = File.ReadAllText("myfile.txt");

После этого смотрим txt.Length.

Align's user avatar

Align

5074 серебряных знака16 бронзовых знаков

ответ дан 6 июл 2016 в 16:57

nzeemin's user avatar

nzeeminnzeemin

1,8689 серебряных знаков21 бронзовый знак

0 / 0 / 0

Регистрация: 09.11.2013

Сообщений: 18

1

В текстовом файле посчитать количество заданных букв

09.11.2013, 11:47. Показов 4824. Ответов 6


Студворк — интернет-сервис помощи студентам

Задание: «В текстовом файле посчитать количество заданных букв»
Срочно надо, вообще ничего не понимаю.



0



cybernate

3 / 3 / 3

Регистрация: 10.03.2013

Сообщений: 45

09.11.2013, 13:15

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include<iostream>
#include<fstream>
#include<string>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    string s;
    char word;
    char letter;
    int count = 0;
 
    ofstream out("file.txt", ios::out);
    cout<<"Введите текст. Конец - Enter #n";
    
    getline(cin,s);
    while(s.compare("#")!=0)
    {
        out<<s;
        getline(cin,s);
    }
 
    out.close();
 
    ifstream in("file.txt", ios::in);
    
    cout<<"Какую букву искать в файле? ";
    cin>>word;
 
    in>>letter;
    while(!in.eof())
    {
        if(letter == word)
        {
            count++;
        }
        in>>letter;
    }
 
    cout<<"nВ тексте найдено "<<count<<" символа "<<"'"<<word<<"'n"<<endl;
    system("pause");
    return 0;
}



1



0 / 0 / 0

Регистрация: 09.11.2013

Сообщений: 18

09.11.2013, 13:36

 [ТС]

3

Спасибо большое! но 2 ошибки выдает



0



3 / 3 / 3

Регистрация: 10.03.2013

Сообщений: 45

09.11.2013, 13:37

4

Какие?



0



0 / 0 / 0

Регистрация: 09.11.2013

Сообщений: 18

10.11.2013, 05:02

 [ТС]

5

Не, всё понял, ошибок нет. Спасибо! Только нужно,чтобы программа считала все буквы автоматически.



0



Anton_Kretov

89 / 51 / 15

Регистрация: 26.06.2013

Сообщений: 179

10.11.2013, 11:37

6

Пожалуйста:

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
27
28
#include <iostream>
#include <cstdio>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    char testString[100];
    char *cp;
    char letterToFind;
 
    cout << "n" << "Введите строку: ";
    gets(testString);
    cp = testString;
 
    cout << "n" << "Введите символ для его нахождени в строке: ";
    cin >> letterToFind;
 
    int countLetters = 0;
    for(register int i = 0; cp[i]; i++) {
        if(cp[i] == letterToFind) countLetters++;
    }
    cout << "n" << "Кол-во таких символов в строке: " << countLetters;
 
    return 0;
}



1



0 / 0 / 0

Регистрация: 09.11.2013

Сообщений: 18

12.11.2013, 02:51

 [ТС]

7

Всем спасибо! Помогло!



0



  • Remove From My Forums
  • Вопрос

  • Доброго времени суток! Помогите разобраться в следующем вопросе. Есть две программки которые считают количество букв в тексте. Написал в текстовом файле А А А А А А А А (последний символ пробел ). Результат Первая программа 8 букв А и 7 пробелов Вторая 8
    букв А и 8 пробелов. Почему  результат разный если файл с текстом один? Спасибо.

    Программы:

    Первая:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace simbols
    {
        public struct HowSimbol
        {
            int А;
            int Б;
            int В;
            int Г;
            int Д;<br/>// аналогично для остальных букв
            int Space;
            public int HowMuchА
            {
                get { return А; }
                set { А++; }
            }
            public int HowMuchБ
            {
                get { return Б; }
                set { Б++; }
            }
            public int HowMuchВ
            {
                get { return В; }
                set { В++; }
            }
           // аналогично для остальных букв
            public int HowMuchSpace
            {
                get { return Space; }
                set { Space++; }
            }
          
        }  
        class Program
        {
    
    
           
                string[] Stroky;
    
                public void pathfile(string str)
                {
                    Stroky =   File.ReadAllLines(str, Encoding.Default);// сохраняем в массив текстовой файл
                }
    
                HowSimbol Rashet()
                {HowSimbol X = new HowSimbol();
                    int i = 0;
                    string stroka;
                    char p;
                    while (i <= Stroky.Length - 1)
                    {
                        {
                            stroka = Stroky[i];
                            stroka = stroka.ToUpper();
                        }
                        for (int a = 0; a < (stroka.Length - 1);a++ )
                        {
                            p = stroka[a];
                            switch (p)
                            {
                                case 'А':
                                    X.HowMuchА = X.HowMuchА;
                                    break;
                                case 'Б':
                                    X.HowMuchБ = X.HowMuchБ;
                                    break;
    
                                case 'В':
                                    X.HowMuchВ = X.HowMuchВ;
                                    break;<br/>// аналогично для остальных букв
                                case ' ':
                                    X.HowMuchSpace = X.HowMuchSpace;
                                    break;
                            }
                        }
                        i++;
                    }
                     return X; 
                 }
                
            
            static void Main(string[] args)
            { 
                //int a = Convert.ToInt16(Console.ReadLine());
                Console.WriteLine("Enter path");
                string s = Console.ReadLine();
               Program R = new Program();
               R.pathfile(s);
               
               HowSimbol N =  R.Rashet();
    
               Console.WriteLine("Число букв А в тексте = {0}",N.HowMuchА);
               Console.WriteLine("Число букв Б в тексте = {0}", N.HowMuchБ);
               Console.WriteLine("Число букв В в тексте = {0}", N.HowMuchВ);
               Console.WriteLine("Число букв Г в тексте = {0}", N.HowMuchГ);
             // аналогично для остальных букв
               Console.WriteLine("Число пробелов в тексте = {0}", N.HowMuchSpace);
               Console.ReadLine();
               
            }
        } 
    }
    
    

    Вторая:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace simbol2
    {
        class Simbol2
        {
            public struct HowSimbol
            {
                int А;
                int Б;
                int В;
              // аналогично для остальных букв
                int Space;
                public int HowMuchА
                {
                    get { return А; }
                    set { А++; }
                }
                public int HowMuchБ
                {
                    get { return Б; }
                    set { Б++; }
                }
                public int HowMuchВ
                {
                    get { return В; }
                    set { В++; }
                }
                public int HowMuchГ
                {
                    get { return Г; }
                    set { Г++; }
                }
                // аналогично для остальных букв
                public int HowMuchSpace
                {
                    get { return Space; }
                    set { Space++; }
                }
                public int HowMuchStroky(string str1)
                {
                    int i = str1.Length;
                    return i;
                }
            } 
            
            static void Main(string[] args)
            {
               
                HowSimbol X = new HowSimbol();//Создаём экземпляр структуры
                Console.WriteLine("Enter path");// Получаем путь к файлу
                string s = Console.ReadLine();
                char retval;
                
                StreamReader sr = new StreamReader(s,Encoding.Default);
                
                
                
                while (sr.EndOfStream != true)
                { retval = (char)sr.Read();
                    
                    
                switch (retval)
                {
                    case 'А':
                        X.HowMuchА = X.HowMuchА;
                        break;
                    case 'Б':
                        X.HowMuchБ = X.HowMuchБ;
                        break;
    
                    case 'В':
                        X.HowMuchВ = X.HowMuchВ;
                        break;
                   // аналогично для остальных букв
                    case ' ':
                        X.HowMuchSpace = X.HowMuchSpace;
                        break;
                    
                }
                }
                sr.Close();
                Console.WriteLine("Число букв А в тексте = {0}", X.HowMuchА);
                Console.WriteLine("Число букв Б в тексте = {0}", X.HowMuchБ);
                Console.WriteLine("Число букв В в тексте = {0}", X.HowMuchВ);
                Console.WriteLine("Число букв Г в тексте = {0}", X.HowMuchГ);
                Console.WriteLine("Число букв Д в тексте = {0}", X.HowMuchД);
                // аналогично для остальных букв
                Console.WriteLine("Число пробелов в тексте = {0}", X.HowMuchSpace);
                Console.ReadLine();
               
            }
        }
    }
    
    

Ответы

  • в первой программе 

    for
    (
    int
    a = 0; a < (stroka.Length — 1);a++ )

    последний символ не рассматривается

    нужно:

    либо

    for (int a
    = 0; a < stroka.Length;a++ )

    либо

    for (int a
    = 0; a <= stroka.Length — 1;a++ )

    • Помечено в качестве ответа

      23 декабря 2011 г. 8:09

Страницы

  • Друзья
  • Карта сайта
  • О сайте

Промо

Как посчитать количество букв, слов и предложений в тексте на C++.

На входе программы имеем текстовый файл text.txt. Необходимо подсчитать число слов, букв и предложений. Для подсчета букв, создадим массив с буквами и будем каждую сравнивать и прибавлять счетчик. Для подсчета слов будем считать пробелы, точки и переходы на новую строку. А для подсчета предложений посчитаем точки.

#include <conio.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
FILE *f;
char buk[87] = «qwetryuiopasdfghjklzxcbvnmйцукенгшщзхъфывапрлоджэячсмитьбю»;
char pre[3] = «!?.»;
int pred,slov,bukv;
pred = slov = bukv = 0;
char ch;
//—————-
if ((f = fopen(«test.txt»,»r»))== NULL)
{
printf(«Cannot open input file.n»);
getch();
return 1;
}
//—————-
while (!feof(f))
{
ch = fgetc(f);
if(ch == ‘ ‘ || ch == ‘n’ || ch == ‘t’) slov++; //Считает точки и переход на следущую строку.
} //Табуляцию тоже считаем.
fseek(f,0,SEEK_SET); //Переход в начала файла.
printf(«Slov : %i»,slov+1); //на 1 слово больше так как пробела после него нет.
//—————-
while (!feof(f))
{
ch = fgetc(f);
for(int i=0;i<87;i++)
if(ch == buk[i]) bukv++;;
}
fseek(f,0,SEEK_SET);
printf(«nBukv : %i»,bukv);
//—————-
while (!feof(f))
{
ch = fgetc(f);
for(int i=0;i<3;i++)
if(ch == pre[i])
{
pred++;
break;
}
}
fseek(f,0,SEEK_SET);
printf(«nPredlozheniy : %i»,pred);
//—————-
getch();
fclose(f); //Закрываем все потоки файлов.
//—————-
return 0;
}

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

002.zip — Скачать готовый проект для Borland C++ Builder 6.0

Комментарии

Комментарий от Анатолий
[ 22 октября, 2009, 21:03 ]

Как добавить в эту программу запись в файл “test.txt” с клавиатуры ?

Комментарий от admin
[ 22 октября, 2009, 21:09 ]

Изучить работу с файлами C++.

Комментарий от дарья
[ 24 мая, 2011, 13:49 ]

как определить 3-ую справа цифру натурального числа? подскажите пожалуйста,а то что-то вообще никак не получается

Поиск по сайту

Статистика

Мета

  • Админ
  • RSS записей
  • RSS комментариев

Понравилась статья? Поделить с друзьями:
  • Как найти синус от числа на калькуляторе
  • Как найти клетку для попугая
  • Как найти молочный зуб арктического волка геншин
  • Как найти старинную мебель
  • Как найти слова начинающиеся на букву python