Hipnoted Posted September 10, 2006 at 09:35 PM Report Share #49512 Posted September 10, 2006 at 09:35 PM Vou ensinar a mexer um pouco com ficheiros. O problema é simples, fazer um programa que leia um ficheiro (ficheiro 1) e que escreva as linhas pares para outro ficheiro (ficheiro 2). Primeiro é preciso criar dois ficheiros de texto (.txt) com os nomes ficheiro1 e ficheiro2. Abre-se o ficheiro1.txt e escreve-se algumas palavras em meia dúzia de linhas. O código é o seguinte: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *fp1, *fp2; int contador=0; char linha[200]; fp1 = fopen("ficheiro1.txt","r"); fp2 = fopen("ficheiro2.txt","w"); while(fgets(linha,200,fp1)) { contador++; if(contador%2 == 0) { fputs(linha,fp2); } } fclose(fp1); fclose(fp2); } Explicação do Código 1º Definir os apontadores para os ficheiros (fp1 e fp2); 2º Definir a variável linha que vai ser usada para conter o buffer de cada linha do primeiro ficheiro. Definir um contador, inicializando a zero. Serve para testar se as linhas lidas são pares (quando o contador é um número par) ou se são ímpares; 3º Abrir os dois ficheiros, um para leitura e outro para escrita: fp1 = fopen("ficheiro1.txt","r"); fp2 = fopen("ficheiro2.txt","w"); 4º Enquanto houver linhas para ler, é lida uma linha de cada vez do ficheiro1 while(fgets(linha,200,fp1)) . É incrementado o contador porque foi lida mais uma linha do ficheiro 1. Se o resto da divisão inteira por 2 for zero, que significa que a linha lida é par, escrevemos essa linha no ficheiro2 fputs(linha,fp2); 5º Fechar os ficheiros com o fclose. Compila-se gerando um executável. Clicar no executável. Para haver sucesso os ficheiros .txt têm de estar na mesma directoria que o executável. Qualquer dúvida é só dizer. [Artigo no Wiki] "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência" Link to comment Share on other sites More sharing options...
magician Posted September 10, 2006 at 09:38 PM Report Share #49513 Posted September 10, 2006 at 09:38 PM Porreiro 🙂 Até gosto de C os apontadores é que estragam tudo 🙂 Java ao poder 😄 Bom tutorial 👍😄 I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
Triton Posted September 10, 2006 at 09:42 PM Report Share #49515 Posted September 10, 2006 at 09:42 PM Bom tutorial! 👍 <3 life Link to comment Share on other sites More sharing options...
Hipnoted Posted September 11, 2006 at 11:34 AM Author Report Share #49636 Posted September 11, 2006 at 11:34 AM Até gosto de C os apontadores é que estragam tudo 😄 Java ao poder 🙂 É verdade que quem tem pavor aos apontadores, JAVA oferece um mar de rosas porque não tem. Mas os apontadores não são uma coisa por aí além, difícil é perceber como eles funcionam. Quando souberes até preferes os apontadores a outro método qualquer.. 👍 "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência" Link to comment Share on other sites More sharing options...
magician Posted September 11, 2006 at 12:17 PM Report Share #49646 Posted September 11, 2006 at 12:17 PM Posso dizer que a unica cadeira que tive em C foi Estruturas de dados 2 e comparando com estruturas de dados 1 que é em java xiiii nem comento 👍 I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
Hipnoted Posted September 11, 2006 at 12:36 PM Author Report Share #49653 Posted September 11, 2006 at 12:36 PM Posso dizer que a unica cadeira que tive em C foi Estruturas de dados 2 e comparando com estruturas de dados 1 que é em java xiiii nem comento 👍 Eu comecei ao contrário. Dei primeiro C e depois JAVA. E acho que é melhor... "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência" Link to comment Share on other sites More sharing options...
magician Posted September 11, 2006 at 01:29 PM Report Share #49664 Posted September 11, 2006 at 01:29 PM Pois mas nós na demos primeiro java porque é a linguagem usada em mais cadeiras da faculdade. I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
Palmeira Posted June 5, 2007 at 10:52 AM Report Share #105141 Posted June 5, 2007 at 10:52 AM while(fgets(linha,200,fp1)) { contador++; if(contador%2 == 0) { fputs(linha,fp2); } } este ciclo é o que percorre o fp1? e consequentemente escreve esse "percurso" no fp2 certo?? este ciclo percorre o ficheiro até EOF ?? Boa explicação btw Twitter devART FaceBook Link to comment Share on other sites More sharing options...
Hipnoted Posted June 5, 2007 at 11:30 AM Author Report Share #105145 Posted June 5, 2007 at 11:30 AM Exactamente como disseste. 😉 "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência" Link to comment Share on other sites More sharing options...
GhostRider Posted January 27, 2008 at 02:02 PM Report Share #162488 Posted January 27, 2008 at 02:02 PM Sim sem duvida alguma apos perceber apontadores não queres outra coisa 😄😁 Link to comment Share on other sites More sharing options...
pedrotuga Posted June 10, 2008 at 06:31 PM Report Share #190546 Posted June 10, 2008 at 06:31 PM Pessoal, acabei de por isto no wiki. http://wiki.portugal-a-programar.pt/dev_geral:c:ficheiros Sintam-se à vontade para corrigir erros e afins. Link to comment Share on other sites More sharing options...
tpessegueiro Posted January 6, 2010 at 09:30 AM Report Share #304408 Posted January 6, 2010 at 09:30 AM eu estou a fazer um trabalho para a cadeira de programacao em c esse programa consiste em criar um programa que permita calcular se um aluno tem direito a bolsa de estudo mas tambem tem de guardar os dados de um aluno num ficheiro. o programa deve permitir inserir , alterar , pesquisar eliminar etc esses dados a minha principal duvida e como e que eu altero os dados de um determinado aluno sem os apagar todos Link to comment Share on other sites More sharing options...
Khnum Posted January 6, 2010 at 11:35 AM Report Share #304428 Posted January 6, 2010 at 11:35 AM mto obrigado...já me tiraste umas grandes dores de cabeça =) Link to comment Share on other sites More sharing options...
Hipnoted Posted January 6, 2010 at 01:26 PM Author Report Share #304455 Posted January 6, 2010 at 01:26 PM eu estou a fazer um trabalho para a cadeira de programacao em c esse programa consiste em criar um programa que permita calcular se um aluno tem direito a bolsa de estudo mas tambem tem de guardar os dados de um aluno num ficheiro. o programa deve permitir inserir , alterar , pesquisar eliminar etc esses dados a minha principal duvida e como e que eu altero os dados de um determinado aluno sem os apagar todos Carregas todos os dados do ficheiro para memória, alteras a informação no runtime e depois no fim gravas para o ficheiro. "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência" Link to comment Share on other sites More sharing options...
tpessegueiro Posted January 8, 2010 at 09:17 AM Report Share #304729 Posted January 8, 2010 at 09:17 AM ha a possibilidade de me darem um exemplo de como se faz isso? Link to comment Share on other sites More sharing options...
fo_11 Posted June 22, 2010 at 10:41 AM Report Share #335428 Posted June 22, 2010 at 10:41 AM while(fgets(linha,200,fp1)) { contador++; if(contador%2 == 0) { fputs(linha,fp2); } } este ciclo é o que percorre o fp1? e consequentemente escreve esse "percurso" no fp2 certo?? este ciclo percorre o ficheiro até EOF ?? Boa explicação btw O ciclo é percorrido até a função fgets retornar NULL ao invés de EOF. Assim que não exista mais nenhuma linha a ler no ficheiro é retornado NULL. "If the stream is at end-of-file, the end-of-file indicator for the stream shall be set and fgets() shall return a null pointer. " Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now