Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) ContarPalavras de um arquivo.txt


FaiscaroX

Pergunta

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!

Editado por FaiscaroX
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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).

Link para o comentário
Compartilhar em outros 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);
}

Editado por FaiscaroX
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...