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

Contar caraceres no Arquivo


gutenbergs

Pergunta

Ola Pessoal estou com muitos problemas no codigo abaixo onde quero contar quantos caracteres um arquivo tem e exibir essa informacao na tela.O seguinte codigo tem o intuito de fazer isso mas não consigo exibir o numero de caracteres que tem no arquivo(o codigo e em c puro):

#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
int count=0,i;
char c,frase[100];
fp = fopen("teste.txt","w"); /* Arquivo ASCII, para
escrita */
if(!fp)
{
printf( "Erro na abertura do arquivo");
exit(0);
}

printf("Digite a frase a ser escrita no arquivo.: ");
gets(frase);

for(i=0;i=frase[i];i++)putc(frase[i],fp);
fclose(fp);

fp = fopen("teste.txt","r+");

while((c = getc(fp) ) != EOF) 

/* Enquanto não chegar ao final do arquivo */

printf("%c",c);
c = getc(fp);
count++; ------------------------------------------------Eu acredito que o erro esteja aqui



printf("O total de caracteres do arquivo e .: %d ",count);
fclose(fp);


printf("\n\n");
system("pause");
}

estou apanhando faz uns 3 dias e nada....

Por favor se alguém puder me ajudar ficarei muuuuito agradecido.

Obrigado.

Editado por Jonathan Queiroz
Adicionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Gutenbergs,

Eu acho que faltou você abrir chaves aí no seu while...

FILE * fpFile;
  int c;
  int count = 0;
  pFile=fopen ("myfile.txt","r");
  if (pFile==NULL) perror ("Error opening file");
  else
  {
    do 
    {
        c = getc (pFile);
        printf("%c",c);
        count++;
     } while (c != EOF);
  }

Faz uma identação que fica melhor de visualizar. Sempre que for trabalhar com arquivo fazer uma verificação para ver se ele realmente abriu antes de trabalhar com ele... para evitar possíveis falhas de segmentação.

Espero ter ajudado.

WebPantoja

Link para o comentário
Compartilhar em outros sites

  • 0

Web Pantoja Obrigado pela rapida resposta,

Eu identei ele e coloquei as chaves mas no ultimo Printf ele me retorna o valor da variavel count =1, ouseja, acredito que ele esteja contando um caracter apenas de ntro do arquivo sendo que digita uma frase inteira.

Ta dificil aqui...rs

Mais uma vez agradecido pela ajuda ,

Link para o comentário
Compartilhar em outros sites

  • 0

Buenas Gutembergs.

Tchê, pelo que eu entendi do seu problema, se é só para gravar a frase no arquivo, receber novamente do arquivo e indicar o numero de caracteres, acredito que seria mais simples você incluir a biblioteca string.h e usar a função strlen(). Seria interessante também você declarar mais uma variável para receber a frase do arquivo. Eu usaria também fgets ao invés de gets para evitar um estouro de memória, caso a frase digitada fosse maior que 100 caracteres.

Veja que estou considerando que seu arquivo vai ter apenas uma linha, devido a forma como abriste o arquivo para escrita.

O código ficaria mais ou menos assim:

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

int main(void){
    FILE *fp;
    int tam;
    char frase[100], frase_arq[100];
    fp = fopen("teste.txt","w"); 

    if(!fp){
        printf( "Erro na abertura do arquivo");
        exit(0);
    }

    printf("\nDigite a frase a ser escrita no arquivo.: ");
    fgets(frase, 100, stdin);
    printf("\n");

    fputs (frase, fp);
    fclose(fp);

    fp = fopen("teste.txt","r+");

    if(!fp){
        printf( "Erro na abertura do arquivo");
        exit(0);
    }

    fgets(frase_arq, 100, fp);
    tam=strlen(frase_arq)-1;

      /* -1 devido ao fato de que fgets tambem considera o ""  */

    fclose(fp);
    printf("O total de caracteres do arquivo e .: %d\n\n",tam);
        exit(0);


}

Editado por brdonsb
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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...