• 0
Sign in to follow this  
FaiscaroX

(Resolvido) ContarPalavras de um arquivo.txt

Question

Bom dia,

Estou fazendo um exercício sobre manipulação de arquivos, porém estou com uma dificuldade, o meu contador tá contando sempre 1 a menos, no caso ele deveria apontar 14 palavras, mas só aponta 13, já testei varias frases e palavras e ainda não consegui encontrar a solução.

Alguém poderia me dar uma luz, do que foi tratado errado?

O que consta no meu arquivo Exercicio 2.txt no momento e a seguinte frase repetida:

E preciso viver e não apenas existir

E preciso viver e não apenas existir

Total de palavras: 14

Total de palavras que o programa me retorna: 13

/*
  Name: Cassio Oliveira Lopes
  Date: 23/05/12 08:36
*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
    char c;
    FILE *fp;
    int count = 0;
    int flag = 0;

    if ((fp=fopen("Exercicio 2.txt", "r"))==NULL)
    {
        printf("ERRO! Arquivo invalido");
        exit(1);
    }

    while(!feof(fp))
    {
        c = getc(fp);
        if ( c == ' ' || c == '\n' )
        {
            if (flag == 0)
            {
                count++;
                flag = 1;
            }
        }
        else
        {
            if ( flag == 1 )
                flag = 0;
        }
    }
    fclose(fp);

    printf("Total de palavras: %d\n", count);
    system("pause");
    return (0);
}

Agradeço qualquer ajuda!

Abraços!

Edited by FaiscaroX

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Você está contando o total de espaços, não o total de palavras. Como em uma lista de n palavras há n - 1 separadores, o correto seria acrescentar 1 no total mesmo. Seria mais ou menos como contar o número de vírgulas em uma lista de números (se há 4 vírgulas, é porque foram listados 5 números).

Share this post


Link to post
Share on other sites
  • 0
Você está contando o total de espaços, não o total de palavras. Como em uma lista de n palavras há n - 1 separadores, o correto seria acrescentar 1 no total mesmo. Seria mais ou menos como contar o número de vírgulas em uma lista de números (se há 4 vírgulas, é porque foram listados 5 números).

Valeu brother, coloquei pra inserir um a mais com uma comparação de condição!

Segue como ficou:

/*
  Name: Cassio Oliveira Lopes
  Date: 23/05/12 08:36
*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
    char arquivo;
    FILE *arq;
    int count = 0;
    int flag = 0;

    if ((arq=fopen("Exercicio 2.txt", "r"))==NULL)
    {
        printf("ERRO! Arquivo invalido");
        exit(1);
    }
        
    while(!feof(arq))
    {
        arquivo = getc(arq);
        if (arquivo == ' ' || arquivo == '\n')
        {
            if (flag == 0)
            {
                count++;
                flag = 1;
            }
        }
        else
        {
            if ( flag == 1 )
                flag = 0;
        }
    }
    if(count >= 1)
    count++;
    
    fclose(arq);
    printf("Total de palavras: %d\n", count);
    system("pause");
    return (0);
}

Edited by FaiscaroX

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this