Publicado em Programação

Manipulação de Ficheiros em Linguagem C

O motivo pelo qual se torna fundamental a utilização de ficheiros resulta da necessidade de perpetuar os dados para além do ciclo de vida de um programa.

Isto significa que os dados armazenados nas variáveis criadas pela execução do programa, residentes na memória principal que, como se sabe, é de natureza volátil, apenas se encontram disponíveis enquanto o programa está em execução. Este facto representa uma clara limitação à longevidade dos dados que, em última instância, ficam dependentes de termos o nosso programa em execução vinte e quatro horas por dia, pois caso o programa seja terminado ou o computador desligado tudo voltará ao ponto de partida.

Uma solução possível consiste na utilização de ficheiros, que pelo facto de serem armazenados em suportes secundários, não ficam dependentes do programa estar em execução ou de termos o nosso equipamento ligado.

Pretendo abordar neste artigo a Manipulação de Ficheiros em Linguagem C, apresentando os principais conceitos e disponibilizando alguns exemplos que espero sejam elucidativos.

Em termos de tipos de ficheiros, e uma vez que vamos abordar os modos texto/binários, vamos considerar duas grandes áreas:

  • Ficheiros de Texto: Serão aqueles que contêm caracteres perceptíveis para o ser humano. São caracteres da tabela ASCII como algarismos, letras do alfabeto, caracteres de acentuação, pontução e outros como é o caso do caracter “New Line” que, apesar de não ser visível, representa uma mudança de linha.
  • Ficheiros binários: Nos ficheiros binários não é bem a representação lógica dos seus bytes em caracteres que está em causa, mas o armazenamento da informação no seu formato mais elementar, ou seja, em sequências de uns e zeros.

Este artigo vai funcionar como “agregador” e será referenciado por todos os outros que lhe sejam relacionados, existindo em todos eles a possibilidade de navegação para este ponto.

Noções gerais:

Algumas noções que convém adquirir antes de começar a manipular ficheiros em Linguagem C.

Ficheiros de Texto:

Abordagem das noções elementares sobre a Manipulação de ficheiros de texto em Linguagem C.

Ficheiros binários:

Abordagem das noções elementares sobre a Manipulação de ficheiros binários em Linguagem C.

Exemplos:

Colecção de alguns exemplos de programas que ajudem a perceber e exemplificar os assuntos aqui abordados.

Anúncios

8 opiniões sobre “Manipulação de Ficheiros em Linguagem C

  1. Obrigado AnbuRick!
    De facto fica muita coisa por dizer e podemos encarar este artigo “apenas” como uma porta de entrada, que foi precisamente o efeito para o qual foi criado.
    A publicação no blog resulta apenas do facto de eu acreditar que o conhecimento deve ser partilhado, e espero que possa vir a ser útil a alguém que eventualmente queira dar os primeiros passos na manipulação de ficheiros.

  2. Boa tarde Prof., como posso fazer um programa em c, que calcule o numero de ocorrencias de uma palavra em um ficheiro generio de texto (.txt)?
    O resultado deve ser apresentado no ecran e tambem deve ser guandado um outro ficheiro de texto de saida.

    Agradecia se me podesses ajudar na resoluçao deste problema, respondendo para o meu mail:
    lau_killa@hotmail.com

    1. Olá!
      Tens tudo o que necessitas no exemplo 3 deste link( https://gracianotorrao.wordpress.com/2008/10/06/manipulacao-de-ficheiros-de-texto-em-linguagem-c-exemplos-avulso/ )

      No teu caso, e partindo do princípio que o caracter que separa as palavras é o espaço (versão simplista), eu faria algo do tipo:
      1 – ler a palavra a procurar
      2 – Inicializa a 0 o contador de ocorrências
      3 – Abrir o f1cheiro de entrada em modo de leitura.
      4 – Ciclo que obtém linha-a-linha o conteúdo do ficheiro de origem enquanto não atingir o EOF
      4.1 – acrescentar um espaço no fim da linha
      4.2 – Ciclo para encontrar espaço mais à esquerda na linha(enquanto existirem espaços na linha).
      4.2.1 – Partir a linha em duas partes. A parte à esquerda do espaço é a palavra e a restante a nova linha.
      4.2.2 – se a palavra retirada coincidir com a palavra procurada então incrementa-se o contador de ocorrências
      5 – Fechar o ficheiro de entrada.
      6 – mostrar o resultado no ecrã.
      7 – Abrir o ficheiro de saída em modo de escrita
      8 – Gravar o valor de ocorrências nesse ficheiro
      9 – Fechar o ficheiro de saída

      Este foi o 1º algoritmo que me veio à cabeça … mas naturalmente que não é o único :)

      Quanto à implementação em C fico à espera … senão só te posso ajudar lá para o fim-de-semana.

      Bom trabalho ;)

      1. Agradeço pela ajuda prof.
        Mas ja tentei e está mesmo dificil de fazer.
        Tentei seguir o algoritimo que descreveste de 1 a 9, o meu ficheiro nem abre e da muitos erros.

        Mcpts,
        CD

  3. olá professor! poderia me ajudar em um problema?

    Eu estou executando um arquivo main, e quero abrir um arquivo em outra pasta (pra que seja editado nesta outra pasta), mas infelizmente meus conhecimentos atuais não me permitem fazer tal operação, eu ficaria muito grato se o senhor puder me ajudar.

    Muito Obrigado!

    1. Olá
      Não sei se compreendi a dúvida.
      Por exemplo, neste código que disponibilizo (http://gracianotorrao.com/2008/09/17/manipulacao-de-ficheiros-de-texto-em-linguagem-c-leituraescrita-caracter-a-caracter/), caso o ficheiro de texto se encontre na drive C: e na diretoria (exemplo), bastaria alterar a linha de abertura do ficheiro, indicando para o efeito o caminho absoluto:
      /* Abrir o ficheiro */
      fp = fopen(“c:\\exemplo\\texto.txt”, “r”);
      Resolve?
      Nota: Atenção às sequências de escape

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s