Tag: ficheiros
Guião laboratorial n.º 3 – exercício 5
Desenvolva uma função que troque o conteúdo de dois ficheiros. Os nomes dos ficheiros são passados como argumentos da função.
#include <stdio.h> #include <stdlib.h> void trocaC(char *t1, char *t2){ FILE *f1; FILE *f2; FILE *temp1, * temp2; char chO1,chO2; f1=fopen(t1, "r"); f2=fopen(t2, "r"); temp1=fopen("temp1.txt", "w"); temp2=fopen("temp2.txt", "w"); if(f1==NULL){ printf("\nerro ao abrir o ficheiro %c", *t1); return; } if(f2==NULL){ printf("\nerro ao abrir o ficheiro %c", *t2); return; } if(temp1==NULL || temp2==NULL){ printf("\nerro ao abrir o ficheiro temp"); return; } //-----------------------copiar dos originais para o temporario while((chO1=fgetc(f1))!=EOF){ fputc(chO1, temp1); } while((chO2=fgetc(f2))!=EOF){ fputc(chO2, temp2); } printf("\ncopia do ficheiro %c::%c para o temp com sucesso", *t1, *t2); fclose(temp1); fclose(temp2); fclose(f1); fclose(f2); //-----------------------copiar do temporario para os originais temp1=fopen("temp1.txt", "r"); temp2=fopen("temp2.txt", "r"); f1=fopen(t1, "w"); f2=fopen(t2, "w"); while((chO1=fgetc(temp1))!=EOF){ fputc(chO1, f2); } while((chO2=fgetc(temp2))!=EOF){ fputc(chO2, f1); } fclose(temp1); fclose(temp2); fclose(f1); fclose(f2); remove("temp1.txt"); remove("temp2.txt"); } int main() { char s1[20], s2[20]; printf("Qual o nome do 1 ficheiro?"); gets(s1); printf("Qual o nome do 2 ficheiro?"); gets(s2); trocaC(s1, s2); return 0; }
Guião laboratorial n.º 3 – exercício 4
Desenvolva uma função que escreva no monitor uma determinada linha de um ficheiro de texto. O nome do ficheiro e o número da linha são passados como argumentos da função.
#include <stdio.h> #include <stdlib.h> void mostraC(char *t1, int linha){ FILE *f1; char ch; int i=1; f1=fopen(t1, "r"); if(f1==NULL){ printf("\nerro ao abrir o ficheiro %s", t1); return; } while((ch=fgetc(f1))!=EOF){ if(i==linha) { printf("%c", ch); } if(ch=='\n'){ i++; } } printf("\n ..lido tudo com sucesso"); fclose(f1); } int main() { char s1[20]; int l; printf("Qual o nome do 1 ficheiro?"); gets(s1); printf("Qual o nome da linha a ler?"); scanf("%d", &l); mostraC(s1, l); return 0; }
Guião laboratorial n.º 3 – exercício 3
altere a função da questão anterior de modo a garantir que as linhas do texto mostradas na consola surjam numeradas.
#include <stdio.h> #include <stdlib.h> void mostraC(char *t1){ FILE *f1; char ch; int i=1; f1=fopen(t1, "r"); if(f1==NULL){ printf("\nerro ao abrir o ficheiro %s", t1); return; } printf("\n%d. ",i); while((ch=fgetc(f1))!=EOF){ printf("%c", ch); if(ch=='\n'){ printf("%d. ",i+1); i++; } } printf("\n ..lido tudo com sucesso"); fclose(f1); } int main() { char s1[20]; printf("Qual o nome do 1 ficheiro?"); gets(s1); mostraC(s1); return 0; }
Guião laboratorial n.º 3 – exercício 2
Desenvolva uma função que mostre o conteúdo de um ficheiro de texto na consola. O nome do ficheiro é passado como argumento.
#include <stdio.h> #include <stdlib.h> #include <conio.h> void mostraC(char *t1){ FILE *f1; char ch; f1=fopen(t1, "r"); if(f1==NULL){ printf("\nerro ao abrir o ficheiro %s", t1); return; } while((ch=fgetc(f1))!=EOF) printf("%c", ch); printf("\n ..lido tudo com sucesso"); fclose(f1); } int main() { char s1[20]; printf("Qual o nome do 1 ficheiro?"); gets(s1); mostraC(s1); return 0; }
Guião laboratorial n.º 3 – exercício 1
1. Desenvolva um programa que duplique um ficheiro de texto. A informação de qual o nome do ficheiro original e do nome do novo ficheiro (cópia do original) deve ser feita através da linha de comando.
Exemplo (assumir que o programa se chama copia): ao ser chamado o programa copia com a linha de comando seguinte:
c: \> copia codigo.c novo.txt
é criado um novo ficheiro, novo.txt, que é uma réplica do ficheiro codigo.txt.
#include <stdio.h> #include <stdlib.h> #include <conio.h> void copia(char *t1, char *t2){ FILE *f1, *f2; char ch; f1=fopen(t1, "r"); f2=fopen(t2, "w"); if(f1==NULL){ printf("\nerro ao abrir o ficheiro %s", t2); return; } if(f2==NULL){ printf("\nerro ao abrir o ficheiro %s", t2); return; } while((ch=fgetc(f1))!=EOF) fputc(ch, f2); printf("\n copia com sucesso"); fclose(f1); fclose(f2); } int main() { char s1[20], s2[20]; printf("Qual o nome do 1 ficheiro?"); gets(s1); printf("Qual o nome do 2 ficheiro?"); gets(s2); copia(s1, s2); return 0; }